我想在一个字符串中替换单词"hi"(包括大写和小写)以及之后的所有内容,直到第一个字母数字字符。
例如:
String text = "How are you ? Hi , I am fine . "
// or
String text = "How are you ? hi! I am fine . "
必须成为:
String text = "How are you ? I am fine . "
谢谢!
String replaceFromWordToNextWord(
String input, String word, String replacement) {
var re = RegExp("\b${RegExp.escape(word)}\b[^a-z\d]+",
caseSensitive: false);
return input.replaceFirst(re, replacement);
}
在你的文本中,它是:
void main() {
var input = "How are you ? Hi , I am fine . ";
print(replaceFromWordToNextWord(input, "hi", ""));
// Prints "How are you ? I am fine ."
}
如果您想要删除特定的部分,您可以使用捕获组(s|^)
来捕获字符串的开头或空白字符。
然后匹配Hi
或hi
,后面跟着除字母数字以外的任何字符。
(s|^)[hH]i[^a-zA-Z0-9]*
在替换中使用第一个捕获组。
void main() {
String s = """How are you ? Hi , I am fine .
How are you ? hi! I am fine .
hi! I am fine . """;
var pattern = RegExp(r"(s|^)[hH]i[^a-zA-Z0-9]*");
print(s.replaceAllMapped(pattern, (match) => '${match.group(1)}'));
}
输出How are you ? I am fine .
How are you ? I am fine .
I am fine .
查看Dart演示和正则表达式演示。