字符串

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”

20190301102949549

Copyright © Arcticfox 2020 all right reserved,powered by Gitbook文档修订于: 2024-06-09 20:22:55

results matching ""

    No results matching ""