dart:core
库中String
类的用法介绍如下。
一系列 UTF-16 代码单元。
字符串主要用于表示文本。一个字符可以由多个代码点表示,每个代码点由一个或两个代码单元组成。例如,巴布亚新几内亚国旗字符需要四个代码单元来表示两个代码点,但应将其视为单个字符:"🇵🇬"。不支持标志字符的平台可能会显示字母"PG"。如果代码点被交换,它将变成瓜德罗普岛标志"🇬🇵" ("GP")。
字符串可以是单行或多行。单行字符串使用匹配的单引号或双引号编写,多行字符串使用三引号编写。以下都是有效的 Dart 字符串:
'Single quotes';
"Double quotes";
'Double quotes in "single" quotes';
"Single quotes in 'double' quotes";
'''A
multiline
string''';
"""
Another
multiline
string""";
字符串是不可变的。虽然您不能更改字符串,但您可以对创建新字符串的字符串执行操作:
const string = 'Dart is fun';
print(string.substring(0, 4)); // 'Dart'
您可以使用加号 (+
) 运算符来连接字符串:
const string = 'Dart ' + 'is ' + 'fun!';
print(string); // 'Dart is fun!'
相邻的字符串文字会自动连接:
const string = 'Dart ' 'is ' 'fun!';
print(string); // 'Dart is fun!'
您可以使用 ${}
在字符串中插入 Dart 表达式的值。评估标识符时可以省略花括号:
const string = 'dartlang';
print('$string has ${string.length} letters'); // dartlang has 8 letters
字符串由一系列 Unicode UTF-16 代码单元表示,可通过 codeUnitAt 或 codeUnits 成员访问:
const string = 'Dart';
final firstCodeUnit = string.codeUnitAt(0);
print(firstCodeUnit); // 68, aka U+0044, the code point for 'D'.
final allCodeUnits = string.codeUnits;
print(allCodeUnits); // [68, 97, 114, 116]
可以通过索引运算符访问各个代码单元的字符串表示形式:
const string = 'Dart';
final charAtIndex = string[0];
print(charAtIndex); // 'D'
字符串的字符以 UTF-16 编码。解码结合了代理对的 UTF-16 会产生 Unicode 代码点。遵循与 Go 类似的术语,Dart 使用名称 'rune' 来表示表示 Unicode 代码点的整数。使用 runes 属性获取字符串的符文:
const string = 'Dart';
final runes = string.runes.toList();
print(runes); // [68, 97, 114, 116]
对于由代理对组成的基本多语言平面(平面 0)之外的字符,runes 组合该代理对并返回一个整数。例如,符文值为 0x1D11E 的音乐剧 G-clef ('𝄞') 的 Unicode 字符由 UTF-16 代理对组成:0xD834
和 0xDD1E
。使用 codeUnits 返回代理对,使用 runes
返回它们的组合值:
const clef = '\u{1D11E}';
for (final item in clef.codeUnits) {
print(item.toRadixString(16));
// d834
// dd1e
}
for (final item in clef.runes) {
print(item.toRadixString(16)); // 1d11e
}
String
类无法扩展或实现。尝试这样做会产生编译时错误。
其他资源
- StringBuffer 以增量方式有效地构建字符串。
- RegExp 使用正则表达式。
- 字符串和正则表达式
- 实现的类型
相关用法
- Dart String.replaceAll用法及代码示例
- Dart StringList.first用法及代码示例
- Dart String.fromCharCodes用法及代码示例
- Dart String.trim用法及代码示例
- Dart String.lastIndexOf用法及代码示例
- Dart String.replaceRange用法及代码示例
- Dart StringList.length用法及代码示例
- Dart String.toLowerCase用法及代码示例
- Dart String.substring用法及代码示例
- Dart String.length用法及代码示例
- Dart String.padRight用法及代码示例
- Dart String.fromEnvironment用法及代码示例
- Dart StringList.clear用法及代码示例
- Dart StringList.elementAt用法及代码示例
- Dart String.trimLeft用法及代码示例
- Dart StringBuffer用法及代码示例
- Dart String.compareTo用法及代码示例
- Dart String.trimRight用法及代码示例
- Dart String.contains用法及代码示例
- Dart String.indexOf用法及代码示例
- Dart String.split用法及代码示例
- Dart String.startsWith用法及代码示例
- Dart String.splitMapJoin用法及代码示例
- Dart String.operator_get用法及代码示例
- Dart String.operator_multiply用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 String class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。