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