将字符串中的特殊字符替换为单个唯一字符

本文关键字:单个 唯一 字符 替换 特殊字符 字符串 | 更新日期: 2023-09-27 18:31:50

我有一个这样的字符串:

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

以下正则表达式将用"-"替换所有特殊字符

Regex rgx = new Regex("[^a-zA-Z0-9 - _]");
someStr = rgx.Replace(someStr, "-");

这将产生如下输出: 姓名---姓氏---

如何将"---"替换为单个"-",使输出如下所示:

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