c# - 正则表达式从字符串中删除所有特殊字符?

标签 c# regex string

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

我有 C# 中的字符串列表:

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 之外的任何字符在我的情况下都是特殊字符。

最佳答案

这实际上取决于您对特殊字符的定义。我发现在大多数情况下,白名单而不是黑名单是最好的方法:

tmp = Regex.Replace(n, "[^0-9a-zA-Z]+", "");

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

"TRA-12:123"
"TRA-121:23"

关于c# - 正则表达式从字符串中删除所有特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3303420/

相关文章:

c# - 即使 Json 无效,如何解析第一个属性?

c# - 在 Episerver 中截断 Xhtmlstring

html - 当 HTML 文本跨多行时,如何在 beautifulsoup4 中返回格式良好的文本

regex - 如何在标签中查找报价?

java - 在java中查找模式匹配单词的最快方法

c# - 使用事件目录 API DirectoryEntry 进行身份验证

c# - 检测向量 2 是否位于另外两个向量 2 之间

python - 使用正则表达式匹配两个字符串之间的文本

algorithm - C# 4.0,确定字符串长度是否最有效的方法!= 0?第2部分

c - 请帮助我在 C 中使用 memcpy()