我正在寻找一个类似于python的strip
函数的Dart函数。仅从开头和结尾删除特定字符。
String str = "^&%. , !@ Hello @World , *%()@#$ "
String newStr = str.strip("#*)(@!,^&%.$ ");
结果:
"Hello @World"
您可以使用正则表达式来查找包含符号的字符串的前导和尾部的长度。然后,您可以使用以下索引制作子字符串:
String str = "^&%. ^ , !@ Hello@ World , *%()@#$ ";
RegExp regex = new RegExp(r'[#*)(@!,^&%.$s]+');
int leftIdx = regex.stringMatch(str).length;
int rightIdx = regex.stringMatch(str.substring(leftIdx).split('').reversed.join('')).length;
String newStr = str.substring(leftIdx, str.length - rightIdx);
结果:
'Hello@ World'
下面的strip
函数应该删除所提供的特殊字符。
String strip(String str, String charactersToRemove){
String escapedChars = RegExp.escape(charactersToRemove);
RegExp regex = new RegExp(r"^["+escapedChars+r"]+|["+escapedChars+r']+$');
String newStr = str.replaceAll(regex, '').trim();
return newStr;
}
void main() {
String str = r"^&%. , !@ Hello @World , *%()@#$ ";
String charactersToRemove = r"#*)(@!,^&%.$ ";
print(strip(str, charactersToRemove));
}
结果:
Hello @World
PS
原始字符串可以通过在字符串前面加一个"r"来创建。它将$视为一个文字字符。
您可以像这样在String
上编写extension
void main() {
String str = "^&%. , !@ Hello @World , *%()@#$ ";
String newStr = str.strip("#*)(@!,^&%.$ "); //<== Hello @World
}
extension PowerString on String {
String strip(String whatToStrip){
int startIndex, endIndex;
for(int i = 0; i <= this.length; i++){
if(i == this.length){
return '';
}
if(!whatToStrip.contains(this[i])){
startIndex = i;
break;
}
}
for(int i = this.length - 1; i >= 0; i--){
if(!whatToStrip.contains(this[i])){
endIndex = i;
break;
}
}
return this.substring(startIndex, endIndex + 1);
}
}
如果你想从字符串的任何地方删除空白和特殊字符,那么试试这个,
String name = '4 Apple 1 k g @@ @ price50';
print(name.replaceAll(new RegExp(r'[#*)(@!,^&%.$s]+'), ""));
Output:- 4Apple1kgprice50