【问题标题】:Remove special characters from a string except whitespace从字符串中删除除空格以外的特殊字符
【发布时间】:2014-11-20 14:12:49
【问题描述】:

我正在寻找一个正则表达式来删除字符串中的所有特殊字符,除了空格。并且可能将所有多空格替换为单个空格。

例如"[one@ !two three-four]"应该变成"one two three-four"

我尝试使用str = Regex.Replace(strTemp, "^[-_,A-Za-z0-9]$", "").Trim(),但它不起作用。我也尝试了更多,但它们要么去掉空格,要么不替换所有特殊字符。

【问题讨论】:

  • one#two 怎么样——会被 one twoonetwo 取代吗?

标签: regex vb.net string


【解决方案1】:
[ ](?=[ ])|[^-_,A-Za-z0-9 ]+

试试这个。查看演示。替换为empty string。查看演示。

http://regex101.com/r/lZ5mN8/69

【讨论】:

  • 谢谢!它不会处理额外的空间,但可以正常工作
  • @ElenaDBA 立即尝试。处理了多个 spcaes。
  • 太好了!谢谢!
【解决方案2】:

使用正则表达式[^\w\s] 删除除单词和空格之外的所有特殊字符,然后替换:

Regex.Replace("[one@ !two three-four]", "[^\w\s]", "").Replace("  ", " ").Trim

【讨论】:

    【解决方案3】:

    方法:

    而不是尝试使用 replace 使用 replaceAll 例如:

    String InputString= "[one@ !two    three-four]";
    
    String testOutput = InputString.replaceAll("[\\[\\-!,*)@#%(&$_?.^\\]]", "").replaceAll("( )+", " ");
    
    Log.d("THE OUTPUT", testOutput);
    

    这将给出一二三四的输出。

    解释:

    .replaceAll("[\\[\\-!,*)@#%(&$_?.^\\]]", "") 这将替换第一个和最后一个括号之间存在的所有特殊字符[]

    .replaceAll("( )+", " ") 这用 1 个空格替换了 1 个以上的空格

    替换 - 符号:

    只需像 .replaceAll("[\\[\\-!,*)@#%(&$_?.^\\]]", "") 那样将符号添加到正则表达式中

    希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 2014-08-17
      • 2011-09-27
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 2015-01-13
      • 2011-04-11
      相关资源
      最近更新 更多