C#从字符串中获取字符串

时间:2014-02-06 18:55:20

标签: c# string get

我有这段代码:

  

[ “DATA”,[],{ “列表”:[ “100002788277842-2”, “100001011669968-2”, “100003141742254-2”, “100000874473252-2”, “100000100157923-2”,“100006537786749- 2" , “100004300660153-2”, “100002922930370-2”, “100000627202286-2”, “100001649542414-2”, “100001687548104-2”, “100000616160095-2”, “100004018411224802-0”, “100001526625563-2” “100002802931617-0”, “100002802931617-3”, “100000959445370”, “100004335731372-0”, “100004335731372-3”, “1172027782-3”, “1172027782-0”, “100001356181635-3”,“100001356181635- 0" , “100001526625563-3”, “100001526625563-0”, “100005292965027-3”, “100005292965027-0”]}

我怎样才能单独获得所有数字但没有“ - ”以及之后的数字? 例如:100002788277842(这是第一个)

3 个答案:

答案 0 :(得分:1)

var numbers = str.Split(new [] { '"','-' },StringSplitOptions.RemoveEmptyEntries)
                 .Where(word => word.All(char.IsDigit) && word.Length > 1)
                 .ToList();

答案 1 :(得分:1)

我宁愿使用正则表达式。

var regex = new Regex(@"\d\d+", RegexOptions.Compiled);
foreach (Match m in regex.Matches(yourstring))
{
    var number = int.Parse(m.Value);
    ...
}

答案 2 :(得分:1)

您可以按如下方式尝试正则表达式:

string s = @"[""DATA"",[],{""list"":[""100002788277842-2"",""100001011669968-2"",""100003141742254-2"",""100000874473252-2"",""100000100157923-2"",""100006537786749-2"",""100004300660153-2"",""100002922930370-2"",""100000627202286-2"",""100001649542414-2"",""100001687548104-2"",""100000616160095-2"",""100004018411224802-0"",""100001526625563-2"",""100002802931617-0"",""100002802931617-3"",""100000959445370"",""100004335731372-0"",""100004335731372-3"",""1172027782-3"",""1172027782-0"",""100001356181635-3"",""100001356181635-0"",""100001526625563-3"",""100001526625563-0"",""100005292965027-3"",""100005292965027-0""]}";

string[] array = Regex.Matches(s, @"\d+(?=-)")
                      .Cast<Match>()
                      .Select(_ => _.Value)
                      .ToArray();

/* 'array' contains:

100002788277842
100001011669968
100003141742254
100000874473252
100000100157923
100006537786749
100004300660153
100002922930370
100000627202286
100001649542414
100001687548104
100000616160095
100004018411224802
100001526625563
100002802931617
100002802931617
100004335731372
100004335731372
1172027782
1172027782
100001356181635
100001356181635
100001526625563
100001526625563
100005292965027
100005292965027

*/

编辑:

添加了转义字符串