当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart String.split用法及代码示例


dart:core 库中String.split 方法的用法介绍如下。

用法:

List<String> split(
   Pattern pattern   
)

在匹配pattern 处拆分字符串并返回子字符串列表。

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

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

如果模式根本不匹配此字符串,则结果始终是仅包含原始字符串的列表。

如果 patternString ,那么总是这样:

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 匹配空字符串,则结果为空列表,因为不包括first-and-last 空匹配之前和之后的空字符串。 (如果模式不匹配,它仍然是一个包含原始空字符串 [""] 的列表)。

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

使用空模式拆分会将字符串拆分为single-code 单元字符串。

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 代码单元边界,而不是符文(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

要获取包含字符串的各个符文的字符串列表,您不应使用 split。您可以改为为每个符文获取一个字符串,如下所示:

const string = '\u{1F642}';
for (final rune in string.runes) {
  print(String.fromCharCode(rune));
}

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 split method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。