将定义的分隔符之间的字符串中的所有子字符串提取到字符串数组中

时间:2015-09-25 14:44:54

标签: c# regex string split substring

我需要某种方法,使用正则表达式或拆分我不知道如何执行以下操作。

我的字符串看起来像这样:

ls 0 
[0,86,180]
ls 1 
[1,2,200]
ls 2 
[2,3,180]
ls 3 
[3,4,234]

......等等。我希望括号[]之间的所有内容都是字符串数组中的一个字符串,而其他所有内容都忽略

3 个答案:

答案 0 :(得分:1)

following这样的正则表达式应该有用。

(\[[\d]*,[\d]*,[\d]*\]*)

您只需阅读here所解释的多个匹配项。

答案 1 :(得分:1)

这可能会给你全部的想法和步骤:

var yourString = @"ls 0 
        [0,86,180]
        ls 1 
        [1,2,200]
        ls 2 
        [2,3,180]
        ls 3 
        [3,4,234]";

var result = yourString.Split(new char[] { '\n' })                //split
                       .Where(i => i.Contains('['))               //filter
                       .Select(i => i.Replace("[", string.Empty)  //prepare
                                     .Replace("]", string.Empty))
                       .ToList();

var newArray = string.Join(",", result);                          //merge the result

答案 2 :(得分:0)

如果数字块总是不在三组中

 var myString = "ls 0 
    [0,86,190]
    ls 1 
    [1,2,300]
    ls 2 
    [2,3,185]
    ls 3 
    [3,4,2345]";

    Regex pattern = new Regex(@"\[[\d,]*\]*");
    Match numbers = pattern.Match(myString);

    if(numbers.Success)
    {
      do {
          var val = numbers.Value;

          // code for each block of numbers

          numbers.NextMatch();
          } while(numbers.Success)
    }