[英]Replacing special chars in a string with a single unique char
我有一个像这样的字符串:
string inputStr = "Name*&^%LastName*#@";
以下正则表达式将所有特殊字符替换为“-”
Regex rgx = new Regex("[^a-zA-Z0-9 - _]");
someStr = rgx.Replace(someStr, "-");
产生的输出类似:Name --- LastName ---
如何用单个“-”替换“ ---”,因此输出如下所示:
Name-LastName
因此,问题是如何将所有特殊字符替换为单个“-”?
问候。
尝试这个
Regex rgx = new Regex("[^a-zA-Z0-9 \- _]+");//note - character is escaped
要么
Regex rgx = new Regex("[^a-zA-Z0-9 _-]+");//or use - as last character
但这将给出Name-LastName-
可以吗?
如果不需要-
在最后的位置,您也可以使用以下代码。 归功于@MatthewStrawbridge。 您可以在评论中看到。
string someStr = rgx.Replace(inputStr, "-").TrimEnd('-');
将输出Name-LastName
。
编辑:正如@pguardiario在评论中指出的那样,更新了我的转义答案-
因为range( []
)对于-
字符具有特殊含义。 如果需要-
作为文字,我们需要对其进行转义或使其成为字符类的第一个或最后一个字符,以使其表现为文字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.