我有一个像这样的字符串:
string inputStr = "Name*&^%LastName*#@";
以下Regex将使用' - '
替换所有特殊字符Regex rgx = new Regex("[^a-zA-Z0-9 - _]");
someStr = rgx.Replace(someStr, "-");
产生类似的输出: 名字--- ---名字
如何用' - '替换'---',所以输出如下:
Name-LastName
所以问题是如何用一个' - '替换所有特殊字符?
问候。
答案 0 :(得分:3)
试试这个
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在评论中指出更新了我对逃避-
的回答,因为范围([]
)对-
字符具有特殊含义。如果我们需要-
作为文字,我们需要将其转义或使其成为字符类的第一个或最后一个字符,以便表现为文字。