2013-02-18 2 views
0

Есть ли способ обрезать строку до первой числовой цифры слева и справа, используя стандартные инструменты .NET? Или мне нужно написать свою собственную функцию (не сложно, но я бы предпочел использовать стандартные методы). Мне нужны следующие выходы для предоставленных входов:Обрезать до первого номера

Input   Output 
----------------------- 
abc123def  123 
;'-2s;35(r  2s;35 
abc12de3f4g  12de3f4 

ответ

4

Вы должны будете использовать regular expressions

string TrimToDigits(string text) 
{ 
    var pattern = @"\d.*\d"; 
    var regex = new Regex(pattern); 

    Match m = regex.Match(text); // m is the first match 
    if (m.Success) 
    { 
     return m.Value; 
    } 

    return String.Empty; 
} 

Если вы хотите назвать это, как вы обычно бы метод String.Trim(), вы можете создать его в качестве extension method.

static class StringExtensions 
{ 
    static string TrimToDigits(this string text) 
    { 
     // ... 
    } 
} 

И тогда вы можете назвать это так:

var trimmedString = otherString.TrimToDigits(); 
+0

Это очень элегантное решение (хотя и не стандартная функция Trim). Большое спасибо. – Daniel

1

Нет, нет встроенного способа. Для этого вам придется написать свой собственный метод.

0

Нет, я не думаю, что есть. Метод:

for (int i = 0; i < str.Length; i++) 
{ 
    if (char.IsDigit(str[i])) 
    { 
     break; 
    } 
    str = string.Substring(1); 
} 
for (int i = str.Length - 1; i > 0; i--) 
{ 
    if (char.IsDigit(str[i])) 
    { 
     break; 
    } 
    str = string.Substring(0, str.Length - 1); 
} 

Я думаю, что это сработает.

Смежные вопросы