Dart String字符串的常用方法概述 整理了大概4000多字
Flutter中字符串的一些常用方法包括:
1 length
:返回字符串的长度。
length
是一个返回整数类型的方法,用于获取一个字符串的长度,例如:
String str = "Hello World!";
int length = str.length;
print(length); // 输出: 12
在这个例子中, length
的值为12,因为这个字符串有12个字符。
2 isEmpty
:判断字符串是否为空。
isEmpty
是一个返回布尔值的方法,用于判断一个字符串是否为空,例如:
String str = "";
bool isEmpty = str.isEmpty;
print(isEmpty); // 输出: true
在这个例子中, isEmpty
的值为true,因为这个字符串是空的。如果字符串不为空,则 isEmpty
的值为false。
isNotEmpty
是一个返回布尔值的方法,与 isEmpty
相反,用于判断一个字符串是否不为空,例如:
String str = "Hello";
bool isNotEmpty = str.isNotEmpty;
print(isNotEmpty); // 输出: true
在这个例子中, isNotEmpty
的值为true,因为这个字符串不为空。如果字符串为空,则 isNotEmpty
的值为false。
3 toUpperCase()
:将字符串中所有的小写字母转换为大写字母。
toUpperCase()
是一个方法,用于将一个字符串中所有的小写字母转换为大写字母,例如:
String str = "Hello World!";
String upperCaseStr = str.toUpperCase();
print(upperCaseStr); // 输出: HELLO WORLD!
在这个例子中, toUpperCase()
方法将原字符串中所有的小写字母转换为大写字母,返回一个新的字符串 HELLO WORLD!
。原字符串 str
的值并没有变化。
4 toLowerCase()
:将字符串中所有的大写字母转换为小写字母。
用于将一个字符串中所有的大写字母转换为小写字母,例如:
String str = "Hello World!";
String lowerCaseStr = str.toLowerCase();
print(lowerCaseStr); // 输出: hello world!
在这个例子中, toLowerCase()
方法将原字符串中所有的大写字母转换为小写字母,返回一个新的字符串 hello world!
。原字符串 str
的值并没有变化。
5 startsWith(pattern)
:判断字符串是否以指定的模式(pattern)开头。
用于判断一个字符串是否以指定的模式(pattern)开头,返回一个布尔值。例如:
String str = "Hello World!";
bool startsWithHello = str.startsWith("Hello");
print(startsWithHello); // 输出: true
在这个例子中, startsWith("Hello")
方法判断字符串 str
是否以 "Hello"
开头,返回一个布尔值 true
。
6 endsWith(pattern)
:判断字符串是否以指定的模式(pattern)结尾。
用于判断一个字符串是否以指定的模式(pattern)结尾,返回一个布尔值。例如:
String str = "Hello World!";
bool endsWithWorld = str.endsWith("World!");
print(endsWithWorld); // 输出: true
在这个例子中, endsWith("World!")
方法判断字符串 str
是否以 "World!"
结尾,返回一个布尔值 true
。
7 contains(pattern)
:判断字符串是否包含指定的模式(pattern)。
返回一个布尔值,用于判断一个字符串是否包含指定的模式(pattern),例如:
String str = "Hello World!";
bool containsHello = str.contains("Hello");
print(containsHello); // 输出: true
在这个例子中, contains("Hello")
方法判断字符串 str
是否包含 "Hello"
这个模式,返回一个布尔值 true
。
8 replaceFirst(oldValue, newValue)
:将字符串中第一个出现的oldValue替换为newValue。
用于将原字符串中第一个匹配的 oldValue
替换为 newValue
,返回一个新的字符串。例如:
String str = "Hello World!";
String newStr = str.replaceFirst("World", "Dart");
print(newStr); // 输出: Hello Dart!
在这个例子中, replaceFirst("World", "Dart")
方法将原字符串中第一个匹配的 "World"
替换为 "Dart"
,返回一个新的字符串 "Hello Dart!"
。原字符串 str
的值并没有变化。
9 replaceAll(oldValue, newValue)
:将字符串中所有出现的oldValue替换为newValue。
用于将一个字符串中所有的匹配 oldValue
的部分替换为 newValue
,返回一个新的字符串。例如:
String str = "Hello World!";
String newStr = str.replaceAll("o", "e");
print(newStr); // 输出: Helle Werld!
在这个例子中, replaceAll("o", "e")
方法将原字符串中所有的匹配 "o"
的部分替换为 "e"
,返回一个新的字符串 "Helle Werld!"
。原字符串 str
的值并没有变化。
10 substring(startIndex, endIndex)
:截取字符串的一部分,从startIndex开始到endIndex结束。
用于获取一个字符串中指定范围内的子串,返回一个新的字符串。其中, startIndex
表示子串的起始位置(包括该位置的字符), endIndex
表示子串的结束位置(不包括该位置的字符)。例如:
String str = "Hello World!";
String subStr = str.substring(0, 5);
print(subStr); // 输出: Hello
在这个例子中, substring(0, 5)
方法获取字符串 str
中从位置0开始到位置5(不包括位置5)的子串,返回一个新的字符串 "Hello"
。原字符串 str
的值并没有变化。注意, substring
方法包括起始位置,不包括结束位置。如果省略 endIndex
参数,则方法会从 startIndex
一直截取到字符串的末尾。
11 split(separator)
:将字符串按照指定的分隔符(separator)拆分成一个字符串数组。
将一个字符串按照指定的分隔符(separator)分割成多个子字符串,返回一个字符串列表。例如:
String str = "Hello World!";
List<String> strList = str.split(" ");
print(strList); // 输出: [Hello, World!]
在这个例子中, split(" ")
方法将字符串 str
按照空格分隔成两个子串 "Hello"
和 "World!"
,组成一个字符串列表 [Hello, World!]
返回。注意, split()
方法只能接受一个参数,即分隔符。如果省略 separator
参数,则默认按照空格或制表符( \t
)进行分割。
12 trim()
:去掉字符串首尾的空格。
用于去掉一个字符串两端的空格(或其他空白字符),返回一个新的字符串。例如:
String str = " Hello World! ";
String newStr = str.trim();
print(newStr); // 输出: Hello World!
在这个例子中, trim()
方法去掉字符串 str
两端的空格,返回一个新的字符串 "Hello World!"
。原字符串 str
的值并没有变化。
13 compareTo(otherString)
比较两个字符串的大小,返回一个整数值,如果当前字符串比otherString小,则返回一个负数,如果当前字符串比otherString大,则返回一个正数,如果当前字符串和otherString相等,则返回0。
例如:
String str1 = "Hello";
String str2 = "World";
int result = str1.compareTo(str2);
print(result); // 输出: -15
在这个例子中, compareTo(str2)
方法比较字符串 str1
和 str2
的字典序,由于字符串 str1
小于字符串 str2
,因此返回一个负数 -15
。
14 codeUnitAt
用于获取一个字符串中指定位置的字符的Unicode编码,返回一个整数。其中, index
表示要获取的字符的位置,从0开始。例如:
String str = "Hello";
int codeUnit = str.codeUnitAt(1);
print(codeUnit); // 输出: 101,对应字符 'e' 的 Unicode 编码。
在这个例子中, codeUnitAt(1)
方法获取字符串 str
中位置为1(即第二个字符)的字符的Unicode编码,即字符 'e'
的Unicode编码 101
(根据ASCII编码表)。
15 indexOf
用于查找一个字符串中是否包含指定的子串。如果包含,则返回该子串在原字符串中第一次出现的位置(从左向右计数,从0开始)。如果不包含,则返回-1。其中, substring
表示要查找的子串, startIndex
表示查找的起始位置(从左向右计数,从0开始),可省略,默认为0。例如:
String str = "Hello World!";
int index = str.indexOf("o");
print(index); // 输出: 4
在这个例子中, indexOf("o")
方法查找字符串 str
中第一次出现的子串 "o"
,找到后返回其位置4。注意,该方法返回的是子串在原字符串中的位置,不是子串长度。如果要查找多个子串,可以在 startIndex
参数中指定上一次查找结束的位置。如果子串不存在,则返回-1。
16 lastIndexOf
用于查找一个字符串中是否包含指定的子串。如果包含,则返回该子串在原字符串中最后一次出现的位置(从右向左计数,从0开始)。如果不包含,则返回-1。其中, substring
表示要查找的子串, startIndex
表示查找的起始位置(从右向左计数,从0开始),可省略,默认为字符串末尾。例如:
String str = "Hello World!";
int index = str.lastIndexOf("o");
print(index); // 输出: 7
在这个例子中, lastIndexOf("o")
方法查找字符串 str
中最后一次出现的子串 "o"
,找到后返回其位置7。注意,该方法返回的是子串在原字符串中的位置,不是子串长度。如果要查找多个子串,可以在 startIndex
参数中指定上一次查找结束的位置。如果子串不存在,则返回-1。
17 padLeft
padLeft(width, [padding])
是一个方法,用于在一个字符串左侧填充指定数量的字符。其中, width
表示填充后字符串的总长度, padding
表示用于填充的字符,可省略,默认为空格字符。例如:
String str = "Hello";
String newStr = str.padLeft(10, "-");
print(newStr); // 输出: -----Hello
在这个例子中, padLeft(10, "-")
方法将字符串 str
左侧填充5个 "-"
字符,直到长度达到10,返回一个新的字符串 "-----Hello"
。如果原字符串的长度已经大于等于指定的长度,则不会填充任何字符,直接返回原字符串。
18 padRight
padRight(width, [padding])
是一个方法,用于在一个字符串右侧填充指定数量的字符。其中, width
表示填充后字符串的总长度, padding
表示用于填充的字符,可省略,默认为空格字符。例如:
String str = "Hello";
String newStr = str.padRight(10, "-");
print(newStr); // 输出: Hello-----
在这个例子中, padRight(10, "-")
方法将字符串 str
右侧填充5个 "-"
字符,直到长度达到10,返回一个新的字符串 "Hello-----"
。如果原字符串的长度已经大于等于指定的长度,则不会填充任何字符,直接返回原字符串。
19 replaceFirstMapped
replaceFirstMapped(from, Function matchFunction)
是一个方法,用于基于正则表达式匹配的方式替换一个字符串中第一次出现的符合条件的子串。其中, from
表示要替换的子串的正则表达式, matchFunction
表示匹配到子串后的替换逻辑。例如:
String str = "Hello World!";
String newStr = str.replaceFirstMapped(RegExp(r"(\w+) (\w+)"), (match) {
return "${match.group(2)} ${match.group(1)}";
});
print(newStr); // 输出: World! Hello
在这个例子中, replaceFirstMapped(RegExp(r"(\w+) (\w+)"))
方法基于正则表达式 (\w+) (\w+)
匹配字符串 str
中第一次出现的类似 "Hello World"
的子串。匹配到后,执行匹配函数 (match) {...}
中的逻辑,将子串中的两个单词交换位置,返回一个新的字符串 "World! Hello"
。
注意,匹配函数中的 match
参数为 Match
类型,表示匹配到的子串及其分组信息,可以通过 match.group(n)
方法获取第n个分组中的内容。如果要替换所有匹配到的子串,可以使用 replaceAllMapped()
方法。
20 replaceRange
replaceRange(start, end, replacement)
是一个方法,用于替换一个字符串中指定范围内的子串。其中, start
表示要替换的子串的起始位置(从左向右计数,从0开始), end
表示要替换的子串的结束位置(从左向右计数,从0开始,不包含该位置的字符), replacement
表示替换后的字符串。例如:
String str = "Hello World!";
String newStr = str.replaceRange(0, 5, "Hi");
print(newStr); // 输出: Hi World!
在这个例子中, replaceRange(0, 5, "Hi")
方法将字符串 str
中从位置0到位置5(不包含5)的子串 "Hello"
替换成 "Hi"
,返回一个新的字符串 "Hi World!"
。
注意,替换范围包括起始位置和结束位置,如果要替换到字符串末尾,可以将 end
参数省略或赋值为字符串长度。
21 splitMapJoin
splitMapJoin(pattern, {onMatch, onNonMatch})
是一个方法,它可以将一个字符串按照指定的模式分割成若干子串,并将每个子串按照指定的方式处理后合并成一个新的字符串。其中, pattern
表示用于匹配子串的模式(可以是一个字符串、一个正则表达式或一个函数), onMatch
表示处理匹配的子串的函数, onNonMatch
表示处理非匹配的子串的函数,如果不指定,则使用默认的处理函数。例如:
String str = "Hello World!";
String newStr = str.splitMapJoin("o", onMatch: (match) => "*", onNonMatch: (nonMatch) => nonMatch.toUpperCase());
print(newStr); // 输出: HEL* W*RLD!
在这个例子中, splitMapJoin("o", onMatch: (match) => "*", onNonMatch: (nonMatch) => nonMatch.toUpperCase())
方法将字符串 str
按照 "o"
字符分割成若干子串,匹配的子串会被替换成 "*"
,非匹配的子串会转换成大写字母。最后将所有子串合并成一个新的字符串 "HEL* W*RLD!"
。
注意, onMatch
和 onNonMatch
参数可以是函数,函数的参数是子串内容,函数的返回值是处理后的子串内容,也可以是字符串,表示直接替换子串内容。如果使用正则表达式作为模式,可以使用 RegExp
类创建正则表达式对象。
22 runes
Dart中的字符串是Unicode字符序列,每个Unicode字符对应一个或多个UTF-16编码的代码单元。使用 runes
属性可以获取字符串中的Unicode字符序列,返回一个可迭代的Unicode字符序列。例如:
String str = "🍎 Hello Dart!";
Iterable<int> runes = str.runes;
for (int rune in runes) {
print(rune);
}
在这个例子中,字符串 str
中包含了一个Unicode字符 🍎
,使用 runes
属性获取字符串的Unicode字符序列,并遍历输出每个字符的编码值。
注意,使用 runes
属性返回的是Unicode字符序列,每个字符对应一个 int
类型的值,而不是UTF-16编码的代码单元序列。如果要将一个Unicode字符序列转换成一个字符串,可以使用 String.fromCharCodes()
方法。
23 String.fromCharCodes
fromCharCodes()
是一个静态方法,用于将一个或多个Unicode字符序列转换成一个字符串。其中,Unicode字符序列可以是一个 List
或一个可迭代对象,每个Unicode字符对应一个 int
类型的数值。例如:
List<int> codes = [72, 101, 108, 108, 111]; // "Hello"的Unicode编码
String str = String.fromCharCodes(codes);
print(str); // 输出: Hello
在这个例子中,将一个包含字符串 "Hello"
的Unicode编码列表 [72, 101, 108, 108, 111]
转换成一个字符串。
注意,使用 fromCharCodes()
方法时需要保证每个Unicode字符所对应的编码值都是有效的。如果编码值无效,则该方法会抛出异常。