【问题标题】:How to replace the special character and space with particular symbol in Regex?如何用正则表达式中的特定符号替换特殊字符和空格?
【发布时间】:2014-04-10 13:37:24
【问题描述】:

我正在开发 windows phone 8 应用程序。

我需要将特殊字符、空格和多个空格替换为- [破折号]

样本

没有替换字符串 - Hampton Inn & Suites Tampa East(赌场区)

我需要这样 - Hampton-Inn-Suites-Tampa-East-Casino-Area

我试过这样的正则表达式

C#

 string passvalue = Regex.Replace(name, @"[ '&().,/]", "-");

以上代码输出

Hampton-Inn---Suites-Tampa-East--Casino-Area-

但我需要 Hampton-Inn-Suites-Tampa-East-Casino-Area

我需要删除
1.(Inn---Suites)进(Inn-Suites)

2.(--Casino-Area) 进入(-Casino-Area)

3.我不需要——终于(Area-)变成了(Area)

谢谢

【问题讨论】:

  • 只需为“一个或多个”事件添加+,而不是像现在这样为“一个”事件添加。

标签: c# regex


【解决方案1】:

首先在您的字符类[] 之后添加一个+ 量词以删除多次出现。之后使用Trim 连字符来删除前导或尾随。

string passvalue = Regex.Replace(name, @"[ '&().,/]+", "-").Trim('-');
                                                   ^ added

但是,对于您的情况,我建议使用正则表达式 [^a-zA-Z]+

string passvalue = Regex.Replace(name, @"[^a-zA-Z]+", "-").Trim('-');

【讨论】:

  • 您的建议 [^a-zA-Z]+ 工作正常我的方法没有显示其他一些值的正确结果。
  • 2 已删除,但我需要它。没有替换字符串 H2O Hilton Pensacola Beach 的示例用替换 HO-Hilton-Pensacola-Beach 但我需要 H2O-Hilton-Pensacola-Beach
  • 这种情况就这样做[^a-zA-Z0-9]+ :-)
【解决方案2】:

您可以使用以下正则表达式:

'([^\w]+)'

并替换为:

'-'

演示:http://regex101.com/r/wU9bB4

【讨论】:

  • 我用你上面的正则表达式试试这个字符串 passvalue = Regex.Replace(name, @"([^\w]+)", "-");
  • @Gurunathan,是的,我看到了。也许,您可以删除最后一个字符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多