用一个唯一的char替换字符串中的特殊字符

时间:2013-09-19 08:08:24

标签: c# regex

我有一个像这样的字符串:

string inputStr = "Name*&^%LastName*#@";

以下Regex将使用' - '

替换所有特殊字符
Regex rgx = new Regex("[^a-zA-Z0-9 - _]");
someStr = rgx.Replace(someStr, "-");

产生类似的输出:     名字--- ---名字

如何用' - '替换'---',所以输出如下:

Name-LastName

所以问题是如何用一个' - '替换所有特殊字符?

问候。

1 个答案:

答案 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在评论中指出更新了我对逃避-的回答,因为范围([])对-字符具有特殊含义。如果我们需要-作为文字,我们需要将其转义或使其成为字符类的第一个或最后一个字符,以便表现为文字。