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!];
如果模式根本不匹配此字符串,則結果始終是僅包含原始字符串的列表。
如果 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
匹配空字符串,則結果為空列表,因為不包括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 String.splitMapJoin用法及代碼示例
- Dart String.substring用法及代碼示例
- Dart String.startsWith用法及代碼示例
- Dart String.replaceAll用法及代碼示例
- Dart String.fromCharCodes用法及代碼示例
- Dart String.trim用法及代碼示例
- Dart String.lastIndexOf用法及代碼示例
- Dart String.replaceRange用法及代碼示例
- Dart String.toLowerCase用法及代碼示例
- Dart String.length用法及代碼示例
- Dart String.padRight用法及代碼示例
- Dart String.fromEnvironment用法及代碼示例
- Dart String.trimLeft用法及代碼示例
- Dart String.compareTo用法及代碼示例
- Dart String.trimRight用法及代碼示例
- Dart String.contains用法及代碼示例
- Dart String.indexOf用法及代碼示例
- Dart String.operator_get用法及代碼示例
- Dart String.operator_multiply用法及代碼示例
- Dart String.replaceFirstMapped用法及代碼示例
- Dart String.endsWith用法及代碼示例
- Dart String.operator_plus用法及代碼示例
- Dart String.operator_equals用法及代碼示例
- Dart String.toUpperCase用法及代碼示例
- Dart String.padLeft用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 split method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。