添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
慷慨大方的仙人掌  ·  ListViewItemPresenter ...·  35 分钟前    · 
淡定的墨镜  ·  DescribeElasticDailyPl ...·  1小时前    · 
打篮球的骆驼  ·  Back End Expressions ...·  3 小时前    · 
大鼻子的镜子  ·  Execute Same workflow ...·  3 小时前    · 
冷冷的移动电源  ·  get-secret-value — ...·  5 小时前    · 
低调的核桃  ·  Answers for: Is ...·  1 月前    · 
刚毅的长颈鹿  ·  Product ...·  1 年前    · 
奔跑的煎饼果子  ·  Weill Hall: 10 years ...·  1 年前    · 

根据 pattern 的匹配位置来分割字符串,并返回一个包含子字符串的列表。

查找此字符串中所有 pattern 的匹配项,就像使用 Pattern.allMatches 一样,并返回匹配项之间的子字符串列表、第一个匹配项之前和最后一个匹配项之后的子字符串。

const string = 'Hello world!';
final splitted = string.split(' ');
print(splitted); // [Hello, world!];

如果模式在此字符串中没有匹配项,则结果始终是一个仅包含原始字符串的列表。

如果 pattern 是一个 String,则以下情况始终成立:

string.split(pattern).join(pattern) == string

如果第一个匹配项是字符串开头的空匹配,则不包括其之前的空子字符串。如果最后一个匹配项是字符串结尾的空匹配,则不包括其之后的空子字符串。如果一个匹配项是空的,并且它紧接在先前的匹配项之后(它从先前的匹配项结束的位置开始),则不包括两个匹配项之间的空子字符串。

const string = 'abba';
final re = RegExp(r'b*');
// re.allMatches(string) will find four matches:
// * empty match before first "a".
// * match of "bb"
// * empty match after "bb", before second "a"
// * empty match after second "a".
print(string.split(re)); // [a, a]

字符串开头或结尾的空匹配,或在其他匹配项之后,不会被特别处理,这会在结果中引入空子字符串。

const string = 'abbaa';
final splitted = string.split('a'); // ['', 'bb', '', '']

如果此字符串是空字符串,且 pattern 匹配空字符串,则结果是一个空列表,因为第一个和最后一个空匹配之前和之后的空字符串不会包括在内。(如果模式不匹配,它仍然是一个仅包含原始空字符串的列表 [""])。

const string = '';
print(string.split('')); // []
print(string.split('a')); // []

使用空模式进行分割会将字符串分割成单个代码单元字符串。

const string = 'Pub';
print(string.split('')); // [P, u, b]
// Same as:
var codeUnitStrings = [
  for (final unit in string.codeUnits) String.fromCharCode(unit)
print(codeUnitStrings); // [P, u, b]

分割发生在UTF-16代码单元边界处,而不是在rune(Unicode码点)边界处。

// String made up of two code units, but one rune.
const string = '\u{1D11E}';
final splitted = string.split('');
print(splitted); // ['\ud834', '\udd1e'] - 2 unpaired surrogate values

要获取包含字符串中单个runes的字符串列表,请不要使用split。您可以通过以下方式获取每个runes的字符串:

const string = '\u{1F642}';
for (final rune in string.runes) {
  print(String.fromCharCode(rune));
    Except as otherwise noted, this site is licensed under a
      Creative Commons Attribution 4.0 International License
    and code samples are licensed under the
      3-Clause BSD License