给出以下字符串:
one#two*three#four#five*
提取对列表的快速解决方案是什么? 每对包含一个带有分隔符的单词,如下所示:
[
['one', '#'],
['two', '*'],
['three', '#'],
['four', '#'],
['five', '*']
]
具体而言,我想同时使用空白和换行符作为分隔符。
答案 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,
],[四个]]