字符序列。

字符串可以是单行或多行。 单行字符串匹配单引号或双引号,多行字符串匹配三重单引号。 下面是有效的Dart字符串:

'Single quotes';
"Double quotes";
'Double quotes in "single" quotes';
"Single quotes in 'double' quotes";

'''A
multiline
string''';

"""
Another
multiline
string""";

字符串是不可改变的。 虽然不能更改字符串,但是可以在字符串上执行操作,然后将结果赋给一个新的字符串。

var string = 'Dart is fun';
var newString = string.substring(0, 5);

你可以使用加号运算符+来连接字符串:

'Dart ' + 'is ' + 'fun!'; // 'Dart is fun!'

你也可以使用相邻的字符串来串联:

'Dart ' 'is ' 'fun!';    // 'Dart is fun!'

你可以使用${}在字符串中插入Dart表达式的值。 当对标识符求值时,大括号可以省略。

string = 'dartlang';
'$string has ${string.length} letters'; // 'dartlang has 8 letters'

字符串表示Unicode UTF-16编码单元(code unit)的序列。 可以通过codeUnitAtcodeUnits成员对各个单元进行访问。

string = 'Dart';
string.codeUnitAt(0); // 68
string.codeUnits;     // [68, 97, 114, 116]

字符串的编码单元,可以通过索引操作符访问访问:

string[0];            // 'D'

字符串的字符使用UTF-16编码。 解码UTF-16时,结合surrogate pair(代理编码对),生成Unicode code point (code point的中文或许叫代码点,是不同字符集用来表示字符的所有整数的范围,而且是从0开始的)。 接下来是类似Go的术语,使用rune生成表示Unicode code point的整数。 使用runes属性来获取字符串的rune:

string.runes.toList(); // [68, 97, 114, 116]

对于Basic Multilingual Plane (基本多文种平面,简写BMP或plane 0,又称零号平面。它由代理编码对组成。 零号平面内的字符用4位十六进制数表示,而零号平面外需要5位或6位十六进制数。) 之外的字符,runes结合编码对,并返回一个单一的整数。例如,音乐中的G-clef('𝄞')符号, Unicode字符使用的rune值0x1D11E由UTF-16代理编码对0xD8340xDD1E组成。 使用codeUnits返回代理编码对,使用runes返回它们的结合值:

var clef = '\u{1D11E}';
clef.codeUnits;         // [0xD834, 0xDD1E]
clef.runes.toList();    // [0x1D11E]

当试图继承或实现String类的时候,会产生一个编译时错误。

其它资源

参见StringBuffer,高效、递增地构建字符串。 参见RegExp使用正则表达式。

也可以查看:

Implements

Constructors

String.fromCharCode(int charCode)

为指定的charCode分配一个新的字符串。

factory
String.fromCharCodes(Iterable<int> charCodes, [int start = 0, int end])

为指定的charCodes分配一个新的字符串。

factory
String.fromEnvironment(String name, {String defaultValue})

返回环境声明变量name的字符串值。

const
factory

Properties

codeUnits List<int>

返回一个只读的List,包含字符串中所有的UTF-16编码单元。

read-only
hashCode int

返回来自字符串的编码单元的哈希码。

read-only
isEmpty bool

如果字符串为空,返回true。

read-only
isNotEmpty bool

如果字符串不为空,返回true。

read-only
length int

字符串的长度。

read-only
runes Runes

返回字符串中Unicode代码点的Iterable

read-only
runtimeType Type

表示对象的运行时类型。

read-only, inherited

Operators

operator *(int times) String

串联this字符串times次,返回一个新的字符串。

operator +(String other) String

thisother串联,创建一个新的字符串。

operator ==(Object other) bool

如果other是一个String,并且有相同的编码单元序列,返回true。

operator [](int index) String

获取index位置的字符(作为一个仅包含单一编码单元的字符串)。

Methods

allMatches(String string, [int start = 0]) Iterable<Match>

针对字符串,反复匹配此Pattern。

inherited
codeUnitAt(int index) int

返回指定位置index的16位UTF-16编码单元。

compareTo(String other) int

将此对象与另一个Comparable进行比较。

inherited
contains(Pattern other, [int startIndex = 0]) bool

如果字符串包含other的匹配,返回true:

endsWith(String other) bool

如果字符串以other结束,返回true。例如:

indexOf(Pattern pattern, [int start]) int

返回字符串中,从start(包括)开始,pattern第一次匹配到的位置:

lastIndexOf(Pattern pattern, [int start]) int

返回字符串中,从start(包括)至0pattern第一次匹配到的位置:

matchAsPrefix(String string, [int start = 0]) Match

针对开始的字符串匹配模式。

inherited
noSuchMethod(Invocation invocation) → dynamic

当一个不存在的函数或成员变量被访问时,该函数被调用。

inherited
padLeft(int width, [String padding = ' ']) String

如果长度小于width,在字符串左边填充字符串。

padRight(int width, [String padding = ' ']) String

如果长度小于width,在字符串右边填充字符串。

replaceAll(Pattern from, String replace) String

将所有from匹配到的子字符串替换为replace

replaceAllMapped(Pattern from, String replace(Match match)) String

将所有from匹配到的子字符串,替换为Match计算后的值。

replaceFirst(Pattern from, String to, [int startIndex = 0]) String

在字符串中,从startIndex开始,将from第一次出现的匹配替换为字符串to, 返回一个新的字符串:

replaceFirstMapped(Pattern from, String replace(Match match), [int startIndex = 0]) String

替换字符串中,from第一个出现的匹配。

replaceRange(int start, int end, String replacement) String

startend的子字符串替换为replacement

split(Pattern pattern) List<String>

pattern匹配到的位置分割字符串,并返回一个子字符串的List。

splitMapJoin(Pattern pattern, {String onMatch(Match match), String onNonMatch(String nonMatch)}) String

分割字符串,转换部分内容,并将它们组合成一个新的字符串。

startsWith(Pattern pattern, [int index = 0]) bool

如果字符串以pattern的匹配开始,返回true。

substring(int startIndex, [int endIndex]) String

返回thisstartIndex(包括)到endIndex(不包括)的子字符串。

toLowerCase() String

将字符串中所有的字符转换为小写。 如果字符串已经全部是小写,返回this

toString() String

返回一个用来表示对象的字符串。

inherited
toUpperCase() String

将字符串中所有的字符转换为大写。 如果字符串已经全部是大写,返回this

trim() String

去掉字符串开始和末尾的空白字符,返回一个新的字符串。

trimLeft() String

去掉字符串开始的空白字符,返回新的字符串。

trimRight() String

去掉字符串末尾的空白字符,返回新的字符串。