【问题标题】:Extract all substrings from string between defined delimiter into string array从定义的分隔符之间的字符串中提取所有子字符串到字符串数组中
【发布时间】:2015-09-25 14:44:54
【问题描述】:

我需要某种方法,使用 regex 或 split 我不知道会执行以下操作。

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

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

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

【问题讨论】:

标签: c# regex string split substring


【解决方案1】:

following 这样的正则表达式应该可以工作。

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

您只需要按照here 的说明阅读多个匹配项。

【讨论】:

  • 尝试创建正则表达式时无法识别转义序列
【解决方案2】:

这可能会给你整个想法和步骤:

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

【讨论】:

    【解决方案3】:

    如果数字块并不总是三个一组

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

    【讨论】:

      猜你喜欢
      • 2015-08-01
      • 2018-10-13
      • 2018-02-05
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 2013-12-11
      相关资源
      最近更新 更多