我想弄清楚如何用空格替换字符串中的所有标点符号但保留一个特殊字符:'-'
例如句子
"hi! I'm an out-of-the-box person, did you know ?"
应该转化为
"hi I m an out-of-the-box person did you know "
我知道解决方案将是单行 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", "-");
那么,有人可以帮我写一个只捕获不同于“-”的标点符号的正则表达式吗?
请您参考如下方法:
如何用空格替换以下正则表达式的匹配项:
[^\w\s-]|_
这表示,任何不是单词字符、数字、空格或破折号的字符。
