在 Dart 中,字符串是处理文本数据的主要方式。字符串是不可变的,这意味着一旦创建了一个字符串对象,就不能更改它的内容。本文将详细介绍 Dart 字符串的一些常用属性和方法。
字符串的基本操作
字符串拼接
你可以使用 + 运算符或者 concat 方法来拼接字符串。不过在 Dart 中,更常见的是使用 + 或者 "" 模板字符串来实现这一功能。
// www.javascriptcn.com code example
void main() {
String firstName = "张";
String lastName = "三";
// 使用 + 运算符
String fullName1 = firstName + " " + lastName;
print(fullName1); // 输出:张 三
// 使用模板字符串
String fullName2 = '$firstName $lastName';
print(fullName2); // 输出:张 三
}字符串截取
字符串提供了多种方法来获取子字符串:
substring(int startIndex, [int endIndex]): 返回从startIndex到endIndex - 1的子字符串。如果省略endIndex,则返回从startIndex到字符串末尾的子字符串。split(String pattern): 根据指定的分隔符分割字符串,并返回一个列表。
// www.javascriptcn.com code example
void main() {
String str = "Hello Dart";
// substring 示例
String subStr1 = str.substring(6);
print(subStr1); // 输出:Dart
String subStr2 = str.substring(0, 5);
print(subStr2); // 输出:Hello
// split 示例
List<String> parts = str.split(" ");
print(parts); // 输出:[Hello, Dart]
}字符串比较与搜索
字符串比较
Dart 提供了多种字符串比较的方法:
compareTo(String other): 比较当前字符串与其他字符串的字典顺序。equalsIgnoreCase(String other): 比较两个字符串是否相等,忽略大小写。
// www.javascriptcn.com code example
void main() {
String str1 = "hello";
String str2 = "HELLO";
String str3 = "world";
// compareTo 示例
int result = str1.compareTo(str2.toLowerCase());
print(result == 0); // 输出:true
// ignoreCase 示例
bool isEqualIgnoreCase = str1.equalsIgnoreCase(str2);
print(isEqualIgnoreCase); // 输出:true
}字符串搜索
contains(pattern): 检查字符串是否包含指定的模式。indexOf(pattern): 返回指定模式首次出现的位置。如果没有找到,则返回 -1。lastIndexOf(pattern): 返回指定模式最后一次出现的位置。如果没有找到,则返回 -1。replaceAll(pattern, replacement): 将所有匹配的模式替换为指定的字符串。replaceFirst(pattern, replacement): 替换第一次出现的匹配项。
// www.javascriptcn.com code example
void main() {
String text = "Hello, welcome to the world of Dart!";
// contains 示例
bool containsWorld = text.contains("world");
print(containsWorld); // 输出:true
// indexOf 示例
int index = text.indexOf("Dart");
print(index); // 输出:27
// replaceAll 示例
String replacedText = text.replaceAll("Dart", "Flutter");
print(replacedText); // 输出:Hello, welcome to the world of Flutter!
}字符串格式化
字符串插值
Dart 支持通过 ${} 来进行变量插值,也可以直接使用 $ 符号。
// www.javascriptcn.com code example
void main() {
int age = 28;
String name = "李四";
// 插值示例
String greeting = '我的名字叫 ${name},今年 ${age} 岁';
print(greeting); // 输出:我的名字叫 李四,今年 28 岁
// 直接使用 $ 符号
String anotherGreeting = "我的名字叫 $name,今年 $age 岁";
print(anotherGreeting); // 输出:我的名字叫 李四,今年 28 岁
}字符串填充
Dart 也提供了对字符串填充的支持,可以用来格式化输出。
// www.javascriptcn.com code example
void main() {
int number = 42;
double pi = 3.14159;
// 使用 toStringAsFixed() 方法
String formattedNumber = number.toString();
String formattedPi = pi.toStringAsFixed(2);
print(formattedNumber); // 输出:42
print(formattedPi); // 输出:3.14
}以上介绍了 Dart 中字符串的一些基本操作、比较与搜索、以及格式化的方法。掌握这些知识可以帮助你在日常开发中更加高效地处理字符串数据。