字符串
Dart中的字符串是UTF-16代码单元的不可变序列。
在字符串中搜索
print('Never odd or even'.contains('odd'));
print('Never odd or even'.startsWith('Never')); print('Never odd or even'.endsWith('even'));
print('Never odd or even'.indexOf('odd') == 6);
从字符串中提取
// 截取子串
assert('Never odd or even'.substring(6, 9) == 'odd');
// 字符串分割.
var parts = 'structured web apps'.split(' ');
assert(parts.length == 3);
assert(parts[0] == 'structured');
// 通过索引获取单个字符
assert('Never odd or even'[0] == 'N');
for (var char in 'hello'.split('')) {
print(char);
}
// 字符串替换
print("obj ec t".replaceAll(" ", ""));
print("obj ec t".replaceFirst(" ", ""));
print("obj ec t".replaceRange(0, 4,"p"));
// 获取字符串中的所有UTF-16 code units
var codeUnitList =
'Never odd or even'.codeUnits.toList();
assert(codeUnitList[0] == 78);
转换大小写
// 转换为大写
assert('structured web apps'.toUpperCase() ==
'STRUCTURED WEB APPS');
// 转换为小写
assert('STRUCTURED WEB APPS'.toLowerCase() ==
'structured web apps');
去除空字符
// 去除两边空格
assert(' hello '.trim() == 'hello');
// 检查字符串是否为空
assert(''.isEmpty);
// 检查字符串是否非空
assert(' '.isNotEmpty);
构建可变字符串
与Java类似,在调用toString()之前,StringBuffer不会生成真正的字符串对象
// writeAll()方法第二个参数是可选的,用于指定分隔符
var sb = StringBuffer();
sb..write('Use a StringBuffer for ')
..writeAll(['efficient', 'string', 'creation'], ' ')
..write('.');
var fullString = sb.toString();
assert(fullString == 'Use a StringBuffer for efficient string creation.');
StringBuffer sBuff = StringBuffer();
sBuff.write("hello");
sBuff.writeln("--");
sBuff.write("world");
sBuff.clear();
print(sBuff.toString());
正则表达式
RegExp类提供了与JavaScript正则表达式相同的功能。使用正则表达式进行字符串的高效搜索和模式匹配。
// 一个或多个数字的正则表达式
var numbers = RegExp(r'\d+');
var allCharacters = 'llamas live fifteen to twenty years';
var someDigits = 'llamas live 15 to 20 years';
// contains() 可使用正则表达式
assert(!allCharacters.contains(numbers));
assert(someDigits.contains(numbers));
// 将每个匹配项替换为另一个指定字符串。
var exedOut = someDigits.replaceAll(numbers, 'XX');
assert(exedOut == 'llamas live XX to XX years');
还可以直接使用RegExp类,Match类提供对正则表达式匹配的访问。
var numbers = RegExp(r'\d+');
var someDigits = 'llamas live 15 to 20 years';
// 检查是否在字符串中匹配
assert(numbers.hasMatch(someDigits));
// 循环遍历所有匹配项
for (var match in numbers.allMatches(someDigits)) {
print(match.group(0)); // 15、20
}
公众号“编程之路从0到1”