【发布时间】:2014-07-28 13:25:22
【问题描述】:
我试图弄清楚如何用空格替换字符串中的所有标点符号但保留一个特殊字符:'-'
例如句子
“嗨!我是个开箱即用的人,你知道吗?”
应该变成
“嗨,我是个开箱即用的人,你知道吗”
我知道解决方案将是单行 Regex 表达式,但我真的不习惯在 Regex 中“思考”,所以到目前为止我尝试的是将所有 '-' 替换为 '9',然后替换所有用 ' ' 标点符号,然后用 '-' 重新替换所有 '9'。它有效,但这很糟糕(特别是如果输入包含一些“9”字符):
string s = @"Hello! Hi want to remove all punctuations but not ' - ' signs ... Please help ;)";
s = s.Replace("-", "9");
s = Regex.Replace(s, @"[\W_]", " ");
s = s.Replace("9", "-");
那么,有人可以帮我写一个只捕获与“-”不同的标点符号的正则表达式吗?
【问题讨论】: