我完全不会使用正则表达式,所以我需要一些帮助来解决我认为最好使用正则表达式解决的问题。
我有 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/