将字符串拆分为单词和分隔符列表

时间:2019-08-25 17:11:25

标签: dart

给出以下字符串:

one#two*three#four#five*

提取对列表的快速解决方案是什么? 每对包含一个带有分隔符的单词,如下所示:

[
    ['one', '#'],
    ['two', '*'],
    ['three', '#'],
    ['four', '#'],
    ['five', '*']
]

具体而言,我想同时使用空白换行符作为分隔符。

3 个答案:

答案 0 :(得分:1)

您需要一个正则表达式:

ImageView

请参见此处的示例Dart代码,该代码可以助您一臂之力:https://dartpad.dartlang.org/ae3897b2221a94b5a4c9e6929bebcfce

答案 1 :(得分:1)

完全公开:镖对我来说是一种相对较新的语言。

也就是说,正则表达式可能是您最好的选择。假设您只使用小写的a-z字母,后跟一个字符,则应该可以解决问题。

  RegExp r = RegExp("([a-z]+)(.)");
  var matches = r.allMatches("one#two*three#four#five*");
  List<dynamic> l = [];
  matches.toList().asMap().forEach((i, m) => l.add([m.group(1), m.group(2)]));
  print(l);

答案 2 :(得分:0)

根据其他回答,这是我对空白换行作为分隔符的解决方案:

void main() {
  RegExp r = RegExp(r"(\S+)([\s]+|$)");
  var text = 'one two three \n\n four ';
  var matches = r.allMatches(text);
  List<dynamic> l = [];
  matches.toList().asMap().forEach((i, m) => l.add([m.group(1), m.group(2)]));
  print(l);
}

输出

  

[[[one,],[two,],[3,

     

],[四个]]

说明:https://regex101.com/r/cRpMVq/2