2014-09-06 73 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