【发布时间】:2011-03-19 05:17:30
【问题描述】:
我完全不会使用正则表达式,因此我需要一些帮助来解决我认为最好通过使用正则表达式来解决的问题。
我有 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 之外的任何字符在我的情况下都是特殊的。
【问题讨论】:
-
4000 是极少数的项目。为什么答案是高效和快速的而不是可读性和可维护性如此重要?您是否在这里衡量过性能问题?
-
@Mark - 这只是我的无知表现,我想。 4000 在我看来很多,但我显然错了。我没有做过任何基准测试,但无论如何,正则表达式似乎非常快,所以我认为我不需要为了加快速度而搞砸。我实际上稍微简化了我的示例,因为我不想不必要地使我的问题复杂化。我实际上有一个复杂类对象的列表,并且我正在使用带有委托函数的 .FindAll 来查找所有匹配项。正则表达式在我的类的一个属性中发挥作用,该属性使用正则表达式来操作委托函数的某个字符串。
-
谢谢大家的帮助!对于像你们这样的天才来说,所有的问题都像这样容易吗? :D