【Dart 学习三】字符串String

字符串代表一系列字符。例如,如果要存储一些数据,如名称,地址等,则应使用字符串数据类型
Dart字符串是一系列UTF-16代码单元。
符文用于表示UTF-32代码单元序列

字符串常见形式

关键字String用于表示字符串文字
字符串值嵌入单引号双引号中。
因此可以使用单引号或双引号来创建字符串:

1
2
3
4
5
6
void main() {
var s1 = 'Single quotes work well for string literals.';
var s2 = "Double quotes work just as well.";
var s3 = 'It\'s easy to escape the string delimiter.';
var s4 = "It's even easier to use the other delimiter.";
}

内嵌表达式:${expression}

可以使用${expression}将表达式的值放在字符串中。
如果表达式是标识符,则可以跳过{}
为了获得对应于对象的字符串,Dart调用对象的toString()方法

1
2
3
4
5
void main() {
var s = 'string interpolation';
print('Dart has $s, which is very handy.'); //打印结果:Dart has string interpolation, which is very handy.
print('That deserves all caps. ' + '${s.toUpperCase()} is very handy!');//打印结果:That deserves all caps. STRING INTERPOLATION is very handy!
}

字符串连接

可以使用相邻的字符串文字+运算符来连接字符串

1
2
3
4
5
6
7
8
9
10
11
void main() {
var s1 = 'String ' 'concatenation' " works even over line breaks.";
print(s1); //打印结果:String concatenation works even over line breaks.

var s2 = 'The + operator ' + 'works, as well.';
print(s2); //打印结果:The + operator works, as well.
var s3 = 'hello'
' world'
'!';
print(s3); //打印结果:hello world!
}

多行字符串

使用带有单引号双引号三引号创建多行字符串:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void main() {
var s1 = '''
You can create
multi-line strings like this one.
''';
print(s1);
/*打印结果
You can create
multi-line strings like this one.
*/
var s2 = """This is also a
multi-line string.""";
print(s2);
/*打印结果
This is also a
multi-line string.
*/
}

原始字符串(r前缀)

可以通过在前面加上r来创建原始字符串:

1
2
3
4
void main() {
var s = r'In a raw string, not even \n gets special treatment.';
print(s);//打印结果:In a raw string, not even \n gets special treatment.
}

文字字符串是编译时常量,只要任何插值表达式是一个编译时常量,其值为null或数值,字符串或布尔值都可以。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void main() {
// 在 const 字符串中。
const aConstNum = 0;
print(aConstNum);// 打印结果:0
const aConstBool = true;
print(aConstBool); // 打印结果:true
const aConstString = 'a constant string';
print(aConstString); // 打印结果:a constant string

// 不在 const 字符串中。
var aNum = 0;
print(aNum); // 打印结果:0
var aBool = true;
print(aBool); // 打印结果:true
var aString = 'a string';
print(aString); // 打印结果:a string
const aConstList = [1, 2, 3];
print(aConstList); // 打印结果:[1, 2, 3]
const validConstString = '$aConstNum $aConstBool $aConstString';
print(validConstString); // 打印结果:0 true a constant string
}