假设我有一个包含 n 个字符的字符串,但我想将其缩减为仅 10 个字符。(鉴于该字符串始终大于 10 个字符)我不知道字符串的内容。
这样怎么修剪呢?
我知道如何在某个字符后修剪它
String s = "one.two";
//Removes everything after first '.'
String result = s.substring(0, s.indexOf('.'));
print(result);
Run Code Online (Sandbox Code Playgroud)
但是如何在一定数量的字符后删除它?
如果字符串的长度小于修剪的长度,上面的示例将失败。下面的代码适用于短字符串和长字符串:
import 'dart:math';
void main() {
String s1 = 'abcdefghijklmnop';
String s2 = 'abcdef';
var trimmed = s1.substring(0, min(s1.length,10));
print(trimmed);
trimmed = s2.substring(0, min(s2.length,10));
print(trimmed);
}
Run Code Online (Sandbox Code Playgroud)
注意:
Dart 字符串例程在 UTF-16 代码单元上运行。对于大多数拉丁语和西里尔语来说,这不是问题,因为所有字符都适合单个代码单元。然而,表情符号、一些亚洲、非洲和中东语言可能需要 2 个代码单元来编码单个字符。例如''.length将返回 2,尽管它是单个字符串。请参阅字符包。
所有答案(使用substring)都获得前 10 个 UTF-16 代码单元,这与前 10 个字符不同,因为某些字符由两个代码单元组成。最好使用以下characters软件包:
import 'package:characters/characters.dart';
void main() {
final str = "Hello World";
print(str.substring(0, 9)); // BAD
print(str.characters.take(9)); // GOOD
}
Run Code Online (Sandbox Code Playgroud)
印刷
? dart main.dart
Hello
Hello W
Run Code Online (Sandbox Code Playgroud)
随着substring你甚至可能会得到半个字符(无效):
print(str.substring(0, 7)); // BAD
print(str.characters.take(7)); // GOOD
Run Code Online (Sandbox Code Playgroud)
印刷:
Hello ?
Hello
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2938 次 |
| 最近记录: |