2014-09-06 67 views
0

那麼,我知道這可以是C#的非常基本的功能。 但我沒有,因爲這麼多年問這個用....有比分割功能更簡單的方法嗎?

我有一個像MYNAME-1_1#字符串1233

我想僅從之間挑數字/字母 - ,_和#...

我可以使用拆分功能,但它需要相當大的代碼...還有什麼?

從彈弦的數字,我應該像下面的代碼

string[] words = s.Split('-'); 
    foreach (string word in words) 
    { 
     //getting two separate string and have to pick the number using index... 
    } 

    string[] words = s.Split('_'); 
    foreach (string word in words) 
    { 
     //getting two separate string and have to pick the number using index... 
    } 

    string[] words = s.Split('#'); 
    foreach (string word in words) 
    { 
     //getting two separate string and have to pick the number using index... 
    } 
+1

的輸出是什麼,你要 – Sajeetharan 2014-09-06 06:44:47

+0

分割功能並不大。爲什麼不通過在您的問題中發佈代碼來向我們展示您的意思? – Enigmativity 2014-09-06 06:45:55

+0

聽起來像正規表達式的工作 – ne1410s 2014-09-06 06:46:21

回答

1

您可以使用正則表達式是:

 string S = "-1-2#123#3"; 
     foreach (Match m in Regex.Matches(S, "(?<=[_#-])(\\d+)(?=[_#-])?")) 
     { 
      Console.WriteLine(m.Groups[1]); 
     } 
+0

只想獲得兩個符號之間的數字 – bnil 2014-09-06 07:21:05

+0

您想在上面的示例中使用1,2123,而不是3? – brz 2014-09-06 07:22:12

+0

雅,我想要3 ...以及不給3 – bnil 2014-09-06 08:00:02

0

寫短一點:

List<char> badChars = new List<char>{'-','_','#'}; 
    string str = "MyName-1_1#1233"; 
    string output = new string(str.Where(ch => !badChars.Contains(ch)).ToArray()); 

輸出爲MyName111233

如果你只想要數字然後:

string str = "MyName-1_1#1233"; 
    string output = new string(str.Where(ch => char.IsDigit(ch)).ToArray()); 

輸出將111233