首页
Preview

Dart 语言核心库dart:core之String 类(2)

String.replaceAll

字符串替换。

用法:String replaceAll(Pattern from, String replace);

将与 from 匹配的所有子字符串替换为 replace。

  const string = 'halloworld!';
  print(string.replaceAll('a', 'e'));//helloworld!

String.replaceAllMapped

用法:

String replaceAllMapped(
   Pattern from,    
   String replace(
       Match match   
    )   
)

用计算字符串替换与from 匹配的所有子字符串。

使用模式生成的match调用replace 函数,并将其结果用作替换。

final exp = RegExp(r'\d+(?:\.\d+)?');
  String message = 'test 40.40 test 20.20';
  final text = message.replaceAllMapped(
      exp, (match) => "<span>${match[0]}</span>"
  );
  print(text);//test <span>40.40</span> test <span>20.20</span>

其中match数组中的第一项被插入到内插双引号字符串文字之间<span></span>内部。

String.replaceFirst

用法:

String replaceFirst(
    Pattern from,
    String to, [int startIndex = 0]
 );

创建一个新的字符串,将第一次出现的 from 替换为 to 。

在此字符串中查找 from 的第一个匹配项,从 startIndex 开始,并创建一个新字符串,其中该匹配项被替换为 to 字符串。

const string = 'helloworld!';
  print(string.replaceFirst('hello', 'hello '));//hello world!
  print(string.replaceFirst('hello', 'Hi ',0));//Hi world!
  print('0.0001'.replaceFirst(RegExp(r'0'), '7', 1)); // '0.7001'

String.replaceFirstMapped

用法:

String replaceFirstMapped(
   Pattern from,    
   String replace(
       Match match   
    ),    
   [int startIndex = 0]   
)

替换此字符串中第一次出现的from

 const string = 'Dart is fun';
  print(string.replaceFirstMapped('fun', (match) => 'open source'));
  //Dart is open source

String.replaceRange

String replaceRange(
   int start,    
   int? end,    
   String replacement   
)

用 replacement 替换从 start 到 end 的子字符串。

 const string = 'Dart is fun';
  print(string.replaceRange(8, null, 'open source'));
  //Dart is open source

start 和end 索引必须指定此字符串的有效范围。那是 0 <= start <= end <= this.length 。如果 end 是 null ,则默认为 length 。

String.startsWith

用法:

bool startsWith(
    Pattern pattern, 
    [int index = 0]
);

此字符串是否以匹配 pattern 开头。

  const string = 'Dart is open source';
  print(string.startsWith('Dart'));// true
  print(string.startsWith(RegExp(r'[A-Z][a-z]'))); // true

如果提供了 index,则此方法检查从该索引开始的子字符串是否以匹配 pattern 开头:

  const string = 'Dart';
  print(string.startsWith('D',0));//true
  print(string.startsWith('D',1));//false

index 不得为负数或大于 length 。

如果 index 大于零并且正则表达式不是多行,则包含 '^' 的 RegExp 不匹配。该模式对整个字符串起作用,并且不会首先提取从 index 开始的子字符串:

const string = 'Dart';
print(string.startsWith(RegExp(r'^art'), 1)); // false
print(string.startsWith(RegExp(r'art'), 1)); // true

String.endsWith

用法:

bool endsWith(
    String other
);

此字符串是否以 other 结尾。

const string = 'Dart is fun';
  print(string.endsWith('un'));//true
  print(string.endsWith('is'));//false
String.padLeft

用法:

String padLeft(
    int width, 
    [String padding = ' ']
);

如果它比 width 短,则在左侧填充此字符串。

对于长度小于 width 的每个位置,返回一个将 padding 预先添加到此字符串的新字符串。

const string = 'H';
  print(string.padLeft(4));// '  H'
  print(string.padLeft(2,'x'));//'xH'
  print(string.padLeft(4,'x'));//'xxxH'
  print(string.padLeft(4, '>>')); // '>>>>>>H'

如果 width 已经小于或等于 this.length ,则不添加填充。负数width 被视为零。

如果 padding 的长度不同于 1,则结果将没有长度 width 。这对于填充是表示单个字符的较长字符串的情况可能很有用,例如 " " 或 "\u{10002} "。在这种情况下,用户应确保 this.length 是字符串长度的正确度量。

String.padRight

用法:

String padRight(
   int width,    
   [String padding = ' ']   
)

如果它比 width 短,则在右侧填充此字符串。

对于长度小于 width 的每个位置,返回一个新字符串,在该字符串之后附加一次 padding 。

const string = 'H';
  print(string.padRight(4));// 'H   '
  print(string.padRight(2,'x'));//'Hx'
  print(string.padRight(4,'x'));//'Hxxx'
  print(string.padRight(4, '>>')); // 'H>>>>>>'

如果 width 已经小于或等于 this.length ,则不添加填充。负数width 被视为零。

如果 padding 的长度不同于 1,则结果将没有长度 width 。这对于填充是表示单个字符的较长字符串的情况可能很有用,例如 " " 或 "\u{10002} "。在这种情况下,用户应确保 this.length 是字符串长度的正确度量。

String.compareTo

用法:

int compareTo(
String other
)
override

将此字符串与 other 进行比较。

如果 this 在 other 之前排序,则返回负值,如果 this 在 other 之后排序,则返回正值,如果 this 和 other 相等则返回零。

排序与两个字符串不同的第一个位置的代码单元的排序相同。如果一个字符串是另一个字符串的前缀,则较短的字符串在较长的字符串之前排序。如果字符串具有完全相同的内容,则它们在排序方面是等价的。排序不检查 Unicode 等效性。比较区分大小写。

  const string = 'Dart';
  print(string.compareTo('PHP'));// -1
  const string2 = 'PHP';
  print(string2.compareTo('Forward'));//1
  print('Forward'.compareTo('Forward'));//0

String.contains

用法:

bool contains(
    Pattern other,
    [int startIndex = 0]
)

此字符串是否包含匹配的 other 。

 const string = 'Dart is fun';
  print(string.contains('is')); // true
  //是否有大写
  print(string.contains(RegExp(r'[A-Z]')));//true

如果提供了startIndex,则此方法仅在该索引处或之后匹配:

startIndex 不得为负数或大于 length 。

const string = 'Dart is fun';
  print(string.contains('is')); // true
  //是否有大写
  print(string.contains(RegExp(r'[A-Z]')));//true

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
励志猿
励志每天写一篇文章,有价值的文章,提升自我!

评论(0)

添加评论