我正在尝试使用Dart和Regexp从字符串中删除所有空格。给出以下字符串:" test test1 test2"我想得到:" testtest1test2"。我已经在javascript中阅读了一些示例,但它们似乎不适用于Dart。到目前为止,这些是一些尝试:
print("test test1 test2".replaceAll(new RegExp(r"/^\s+|\s+$|\s+(?=\s)/g"), ""));
print("test test1 test2".replaceAll(new RegExp(r"/\s+\b|\b\s/ig"), ""));
这是基于:Regex to remove whitespaces
有人可以告诉我这里的错误。
答案 0 :(得分:2)
print("test test1 test2".replaceAll(new RegExp(r"\s+\b|\b\s"), ""));
(没有/ig
)为我工作。
Dart不支持这些选项。
/g
相当于All
replaceAll
/i
相当于new RegExp(r"...", caseSensitive: false)
答案 1 :(得分:2)
我认为这涵盖了更多的基础:
textWithWhitespace.replaceAll(new RegExp(r"\s+\b|\b\s|\s|\b"), "")
当前接受的答案对我不起作用。在全部为空白的情况下,我的空白未被删除
String whitespace = " ";
print(whitespace.replaceAll(new RegExp(r"\s\b|\b\s"), "").length);
//length is 4 here
答案 2 :(得分:2)
我简直不敢相信,简单地从字符串中删除空格太复杂了。因此,我想出了这个解决方案,除了使用正则表达式之外,我更喜欢它:
myString.split(" ").join("");
答案 3 :(得分:1)
Jetstream
这将删除所有与空格,制表符,回车符,换行符或换页符匹配的空白(\ t \ r \ n \ f),如此处https://www.regular-expressions.info/shorthand.html#:~:text=%5Cs%5Cd%20matches%20a%20whitespace,latter%20matches%201%20(one)
str.replaceAll(new RegExp("[ \n\t\r\f]"), '');
第二个示例演示了在应用replaceAll之后,所有空格为零的字符串。
String s1 = " have Yourself \n \t A M e r\r \r \f r y Little Christma s ";
print(s1.replaceAll(new RegExp("[ \n\t\r\f]"), ''));
//haveYourselfAMerryLittleChristmas
答案 4 :(得分:1)
这不是问题的确切答案。然而,这是我今天早些时候偶然发现这个问题时需要的答案。
以下代码将带有随机空格(甚至多个空格)的 String
转换为每个单词之间只有 单个 空格的 String
(它删除空格在外面也是)。
例如,当您的用户为您的应用程序选择用户名并决定做一个傻瓜并输入 " Mr Bob Felix Johnson "
而不是 "Mr Bob Felix Johnson"
时,这可能很有用。
void main() {
// INPUT NAME WITH UNWANTED SPACES
String text = ' Mr Bob Felix Johnson ';
// INPUT NAME WITH UNWANTED SPACES
final pattern = RegExp('\\s+');
text = text.replaceAll(pattern, ' ');
if (text[0] == ' ') {
text = text.substring(1, text.length);
}
if (text[text.length - 1] == ' ') {
text = text.substring(0, text.length - 1);
}
// NAME WITH REMOVED SPACES
print(text); // THIS PRINTS "Mr Bob Felix Johnson"
// NAME WITH REMOVED SPACES
}
答案 5 :(得分:0)
whitespace.replaceAll(new RegExp(r“ \”),“”); 对我来说没关系。
答案 6 :(得分:0)
即使不使用RegExp,它也能正常工作:
myString.replaceAll(" ", "");
答案 7 :(得分:0)
除了此处 Matthew Trent 的解决方案https://stackoverflow.com/a/67396167/12411655
代替这个
if (text[0] == ' ') {
text = text.substring(1, text.length);
}
if (text[text.length - 1] == ' ') {
text = text.substring(0, text.length - 1);
}
你可以像这样使用trim()方法
text.trim().replaceAll(RegExp('\\s+'), ' ');