如何获取字符串中的最后n个字符?
我试过使用:
var string = 'Dart is fun';
var newString = string.substring(-5);
Run Code Online (Sandbox Code Playgroud)
但这似乎并不正确
ste*_*iel 12
虽然@Alexandre Ardhuin 是正确的,但重要的是要注意,如果字符串少于n字符,则会引发异常:
Uncaught Error: RangeError: Value not in range: -5
Run Code Online (Sandbox Code Playgroud)
在以这种方式运行之前,您应该检查长度
Uncaught Error: RangeError: Value not in range: -5
Run Code Online (Sandbox Code Playgroud)
在此过程中,您还可以考虑确保给定的字符串不为空。
String newString(String oldString, int n) {
if (oldString.length >= n) {
return oldString.substring(oldString.length - n)
} else {
// return whatever you want
}
}
Run Code Online (Sandbox Code Playgroud)
如果您喜欢单线,另一种选择是:
oldString ??= '';
Run Code Online (Sandbox Code Playgroud)
如果您希望它总是返回一个长度为 的字符串n,您可以使用您想要的任何默认值 ( .padLeft(n, '0'))来填充它,或者只保留trim().
至少,从 Dart SDK 开始2.8.1,情况就是如此。我知道他们正在努力提高 null 安全性,这在未来可能会改变。
创建扩展:
extension E on String {
String lastChars(int n) => substring(length - n);
}
Run Code Online (Sandbox Code Playgroud)
用法:
var source = 'Hello World';
var output = source.lastChars(5); // 'World'
Run Code Online (Sandbox Code Playgroud)
var newString = string.substring(string.length - 5);
Run Code Online (Sandbox Code Playgroud)
var newString = string.substring((string.length - 5).clamp(0, string.length));
Run Code Online (Sandbox Code Playgroud)
注意:我使用钳位是为了避免值范围错误。这样,如果以某种方式计算的话,您也不受负 n 字符的影响。
事实上,我想知道 dart 没有在子字符串方法中实现这样的钳位。
如果你想了解 null,只需使用:
var newString = string?.substring((string.length - 5).clamp(0, string.length));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2022 次 |
| 最近记录: |