Dart:使用regexp从字符串

时间:2017-08-24 15:48:05

标签: regex dart

我正在尝试使用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

有人可以告诉我这里的错误。

8 个答案:

答案 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+'), ' ');
相关问题