2013-02-18 55 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

這是一個非常優雅的解決方案(雖然不是標準的修剪功能)。非常感謝。 – Daniel 2013-02-18 18:39:29

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); 
} 

我認爲這將工作。