如何从Dart中的字符串中仅删除符号

时间:2018-11-10 13:59:28

标签: regex dart flutter

我想从字符串中删除所有特殊符号,并且字符串中仅包含单词 我试过了,但只给出了相同的输出

main() {
    String s = "Hello, world! i am 'foo'";
    print(s.replaceAll(new RegExp('\W+'),'')); 
}

输出:Hello, world! i am 'foo'
预期:Hello world i am foo

3 个答案:

答案 0 :(得分:3)

有两个问题:

  • InvalidArgumentException : Database [pma] not configured. at C:\xampp\htdocs\Loginproject\Prathamesh\vendor\laravel\framework\src\Illuminate\Database\DatabaseManager.php:140 136| // If the configuration doesn't exist, we'll throw an exception and bail. 137| $connections = $this->app['config']['database.connections']; 138| 139| if (is_null($config = Arr::get($connections, $name))) { > 140| throw new InvalidArgumentException("Database [{$name}] not configured."); 141| } 142| 143| return $config; 144| } Exception trace: 1 Illuminate\Database\DatabaseManager::configuration("pma") C:\xampp\htdocs\Loginproject\Prathamesh\vendor\laravel\framework\src\Illuminate\Database\DatabaseManager.php:103 2 Illuminate\Database\DatabaseManager::makeConnection("pma") C:\xampp\htdocs\Loginproject\Prathamesh\vendor\laravel\framework\src\Illuminate\Database\DatabaseManager.php:74 不是有效的转义序列,要在常规字符串文字中定义反斜杠,您需要使用'\W' raw 字符串文字({ {1}})
  • \\的正则表达式模式匹配不是单词char的任何char包括空格,您需要对单词和空白类使用否定字符类r'...'

使用

\W

输出:[^\w\s]

答案 1 :(得分:2)

The docs for the RegExp class指出,如果要构造正则表达式,则应使用 raw 字符串(以r开头的字符串文字,例如r"Hello world")那样。在使用转义符时,这尤其必要。

此外,您的正则表达式也将捕获空格,因此您需要对其进行修改。您可以改用RegExp(r"[^\s\w]")-匹配任何非空格字符或单词字符

答案 2 :(得分:1)

我发现了这个问题,寻找如何从字符串中删除符号。对于其他想要这样做的人:

final myString = 'abc=';
final withoutEquals = myString.replaceAll(RegExp('='), ''); // abc