目录
String
数据类型表示一系列字符。Dart字符串是一系列UTF 16代码单元。
Dart中的字符串值可以使用 单引号 或 双引号 或 三引号 表示。单行字符串使用单引号或双引号表示。三引号用于表示多行字符串。
在Dart中表示字符串值的语法如下所示:
句法
String variable_name = ‘value’
或者
String variable_name = “value”
或者
String variable_name = ‘’‘line1
line2’‘’
或者
String variable_name= “”“line1
line2"”"
以下示例说明了在Dart中使用String数据类型。
String str1 = '这是一个单行字符串';
String str2 = "这是一个单行字符串";
String str3 = '''这是一个多行字符串''';
String str4 = """这是一个多行字符串""";
print(str1);
print(str2);
print(str3);
print(str4);
输出
这是一个单行字符串
这是一个多行字符串
这是一个多行字符串
字符串是不可变的。但是,字符串可以进行各种操作,结果字符串可以存储为新值。
字符串插值
通过将值附加到静态字符串来创建新字符串的过程称为连接或插值。换句话说,它是将字符串添加到另一个字符串的过程。
运算符加(+
)是连接/插入字符串的常用机制。
例1
String str1 = "hello";
String str2 = "world";
String res = str1+str2;
print("The concatenated string : ${(res)}");
输出
The concatenated string : helloworld
例2
可以使用${()}
来插入字符串中Dart表达式的值。以下示例说明了相同的内容。
String num1 = "The sum of 1 and 1 is ${(n)}";
print(num1);
String num2 = "The sum of 2 and 2 is ${(2+2)}";
print(num2);
输出
The sum of 1 and 1 is 2
The sum of 2 and 2 is 4
字符串属性
属性 | 描述 |
---|---|
codeUnits 属性 | 返回给定字符串的UTF-16代码单元列表 |
isEmpty 属性 | 如果字符串为空,则返回 true |
length 属性 | 返回字符串的长度,包括空格,制表符和换行符 |
返回给定字符串的UTF-16代码单元列表。
语法
string.codeUnits
例
String str = "Hello";
print(str.codeUnits);
输出
[72, 101, 108, 108, 111]
如果字符串为空,则返回 true ; 否则返回 false 。
语法
string.isEmpty
例
String str = "Hello";
print(str.isEmpty);
输出
false
返回字符串的长度,包括空格,制表符和换行符。
语法
string.length
例
String strHello = "Hello All";
print("The length of the string is: ${(strHello.length)}");
输出
The length of the string is: 9
字符串方法
dart:core
库中的String类还提供了操作字符串的方法。其中一些方法如下:
方法 | 描述 |
---|---|
toLowerCase() 方法 | 将给定字符串中所有字符转换为小写字母 并返回新的字符串 |
toUpperCase() 方法 | 将给定字符串中所有字符转换为大写字母 并返回新的字符串 |
trim() 方法 | 删除所有前导和尾随空格 并返回一个新字符串 但此方法不会丢弃两个字符串之间的空格 |
compareTo(other-string) 方法 | 字符串比较 返回 1、0 或 -1 |
replaceAll(from, replace) 方法 | 用给定值替换与指定模式匹配的所有子字符串 |
split(pattern) 方法 | 在指定分隔符的匹配处拆分字符串 并返回子字符串列表 |
substring(startIndex, endIndex) 方法 | 返回此字符串的子字符串, 该字符串从startIndex(包括) 延伸到endIndex(不包括)。 |
toString() 方法 | 返回对象的字符串表示形式 |
codeUnitAt(index) 方法 | 返回给定索引处的16位UTF-16编码 |
通过将给定字符串中的所有字符转换为小写字母来返回新字符串。
语法
string.toLowerCase()
返回值类型
返回一个字符串。
例
String strLowerUpper = "HeLlo WoRLd";
print("${(strLowerUpper)} to lower : ${(strLowerUpper.toLowerCase())}");
输出
HeLlo WoRLd to lower : hello world
通过将给定字符串中的所有字符转换为大写字母来返回新字符串。
语法
string.toUpperCase()
返回值类型
返回一个字符串。
例
String strLowerUpper = "HeLlo WoRLd";
print("${(strLowerUpper)} to upper : ${(strLowerUpper.toUpperCase())}");
输出
HeLlo WoRLd to upper : HELLO WORLD
删除所有前导和尾随空格并返回一个新字符串。但是,此方法不会丢弃两个字符串之间的空格。
语法
string.trim()
返回值类型
返回一个字符串。
例
String strTrim = " hello world ";
print("\"${(strTrim)}\" => \"${(strTrim.trim())}\"");
输出
" hello world " => "hello world"
比较两个字符串并返回值。
语法
string.compareTo(other string)
返回值类型
- 0 - 字符串相等
- 1 - 第一个字符串大于第二个字符串
- -1 - 第一个字符串小于第二个字符串
例
String strCompare1 = "A";
String strCompare2 = "B";
String strCompare3 = "A";
print("${(strCompare1)} compare to ${(strCompare2)}: ${(strCompare1.compareTo(strCompare2))}");
print("${(strCompare2)} compare to ${(strCompare1)}: ${(strCompare2.compareTo(strCompare1))}");
print("${(strCompare1)} compare to ${(strCompare3)}: ${(strCompare1.compareTo(strCompare3))}");
输出
A compare to B: -1
B compare to A: 1
A compare to A: 0
用给定值替换与指定模式匹配的所有子字符串。
语法
string.replaceAll(Pattern from, String replace)
参数
- From - 要替换的字符串。
- replace - 替换字符串。
返回值类型
返回一个字符串。
例
String strReplace = "Hello World";
print("New String: ${strReplace.replaceAll('World','ALL')}");
输出
New String: Hello ALL
在指定分隔符的匹配处拆分字符串并返回子字符串列表。
语法
string.split(Pattern pattern)
参数
pattern - 分隔符。
返回值类型
返回String对象的列表。
例
String strSplit = "Today. is. Thursday";
print("String List: ${strSplit.split('.')}");
输出
String List: [Today, is, Thursday]
语法
返回此字符串的子字符串,该字符串从startIndex(包括)延伸到endIndex(不包括)。
参数
- startIndex - 从(包含)开始提取的索引
- endIndex - 停止提取的索引(不包括)
注:
索引基于零,即第一个字符的索引为0
,依此类推。
返回值类型
返回一个字符串。
例
String strSub = "0123456789";
print("New String: ${strSub.substring(6)}");
print("New String: ${strSub.substring(2,6)}");
输出
New String: 6789
New String: 2345
返回对象的字符串表示形式。
语法
number.toString()
返回值类型
返回一个字符串。
例
var numToString = 5.5;
var strNumToString = numToString.toString();
print("${(numToString)} to string is ${(strNumToString)}");
print("${(strNumToString)} is string? ${(strNumToString is String)}");
输出
5.5 to string is 5.5
5.5 is string? true
返回给定索引处的16位UTF-16代码单元。
语法
string.codeUnitAt(index)
参数
索引 - 表示字符串中的字符索引。
返回值类型
返回一个整数。
例
var res = "Good Day";
print("Code Unit of index 0 (G): ${res.codeUnitAt(0)}");
输出
Code Unit of index 0 (G): 71