首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >正则表达式删除字符串中的所有特殊字符?

正则表达式删除字符串中的所有特殊字符?
EN

Stack Overflow用户
提问于 2010-07-22 04:14:20
回答 9查看 248K关注 0票数 69

我完全不能使用正则表达式,所以我需要一些帮助来解决一个我认为最好使用正则表达式来解决的问题。

我在C#中有一个字符串列表:

代码语言:javascript
复制
List<string> lstNames = new List<string>();
lstNames.add("TRA-94:23");
lstNames.add("TRA-42:101");
lstNames.add("TRA-109:AD");

foreach (string n in lstNames) {
  // logic goes here that somehow uses regex to remove all special characters
  string regExp = "NO_IDEA";
  string tmp = Regex.Replace(n, regExp, "");
}

我需要能够循环遍历列表,并返回没有任何特殊字符的每一项。例如,第一项将是"TRA9423",第二项将是"TRA42101“,第三项将是TRA109AD。

有没有一个正则表达式可以帮我做到这一点?

此外,该列表包含4000多个项目,所以我需要搜索和替换是有效的和快速的,如果可能的话。

编辑:我应该指定a-z,A-Z和0-9之外的任何字符在我的情况下都是特殊的。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-07-22 04:16:20

这真的取决于你对特殊字符的定义。我发现在大多数情况下,白名单比黑名单是最好的方法:

代码语言:javascript
复制
tmp = Regex.Replace(n, "[^0-9a-zA-Z]+", "");

您应该小心使用当前的方法,因为以下两项将被转换为相同的字符串,因此将无法区分:

代码语言:javascript
复制
"TRA-12:123"
"TRA-121:23"
票数 120
EN

Stack Overflow用户

发布于 2010-07-22 04:15:53

这应该可以做到:

代码语言:javascript
复制
[^a-zA-Z0-9]

基本上,它匹配所有非字母数字字符。

票数 17
EN

Stack Overflow用户

发布于 2010-07-22 04:16:56

[^a-zA-Z0-9]是匹配任何非字母数字字符的字符类。

或者,[^\w\d]也可以做同样的事情。

用法:

代码语言:javascript
复制
string regExp = "[^\w\d]";
string tmp = Regex.Replace(n, regExp, "");
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3303420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档