在 Dart 中trim(), ,trimLeft()和trimRight()string 方法不使用参数来指定不需要的非空白字符。
在 Dart 中从字符串末尾修剪特定字符的最佳方法是什么?
我现在正在使用这个,但感觉很难记住而且不太通用:
final trailing = RegExp(r"/+$");
final trimmed = "test///".replaceAll(trailing, "");
assert(trimmed == "test");
Run Code Online (Sandbox Code Playgroud)
lrn*_*lrn 10
没有特定的功能可以从字符串末尾删除非空格。您的RegExp基本方法是合理的,但当您要删除的字符在正则表达式中有意义时可能会很危险。
我只是做我自己的功能:
String removeTrailing(String pattern, String from) {
if (pattern.isEmpty) return from;
var i = from.length;
while (from.startsWith(pattern, i - pattern.length)) i -= pattern.length;
return from.substring(0, i);
}
Run Code Online (Sandbox Code Playgroud)
然后您可以将其用作:
final trimmed = removeTrailing("/", "test///")
assert(trimmed == "test");
Run Code Online (Sandbox Code Playgroud)
相应的trimLeading函数是:
String trimLeading(String pattern, String from) {
if (pattern.isEmpty) return from;
var i = 0;
while (from.startsWith(pattern, i)) i += pattern.length;
return from.substring(i);
}
Run Code Online (Sandbox Code Playgroud)
由于现有的答案lrn有很多问题 - 包括无限循环场景 - 我想我应该发布我的版本。
String trimLeft(String from, String pattern){
if( (from??'').isEmpty || (pattern??'').isEmpty || pattern.length>from.length ) return from;
while( from.startsWith(pattern) ){
from = from.substring(pattern.length);
}
return from;
}
String trimRight(String from, String pattern){
if( (from??'').isEmpty || (pattern??'').isEmpty || pattern.length>from.length ) return from;
while( from.endsWith(pattern) ){
from = from.substring(0, from.length-pattern.length);
}
return from;
}
String trim(String from, String pattern){
return trimLeft(trimRight(from, pattern), pattern);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4132 次 |
| 最近记录: |