如何从字符串列表中删除所有非字母数字字词(List<string>
)?
我发现了这个正则表达式!word.match(/^[[:alpha:]]+$/)
但是在C#中如何获得一个只包含纯字母数字字符串的新列表?
答案 0 :(得分:10)
您可以使用LINQ。假设你的字符串有theList
(或数组或其他):
var theNewList = theList.Where(item => item.All(ch => char.IsLetterOrDigit(ch)));
如果需要,最后添加.ToList()
或.ToArray()
。这是有效的,因为String
类实现了IEnumerable<char>
。
答案 1 :(得分:3)
Regex rgx = new Regex("^[a-zA-Z0-9]*$");
List<string> list = new List<string>() { "aa", "a", "kzozd__" ,"4edz45","5546","4545asas"};
List<string> list1 = new List<string>();
foreach (var item in list)
{
if (rgx.Match(item).Success)
list1.Add(item);
}
答案 2 :(得分:1)
使用LINQ + regex,您可以使用:
list = list.Where(s => Regex.IsMatch(s, "^[\\p{L}0-9]*$")).ToList();
^[\\p{L}0-9]*$
可以识别Unicode字母数字字符。如果您只想使用ASCII,^[a-zA-Z0-9]*$
也可以正常工作。
答案 3 :(得分:0)
有一个静态辅助函数可以从List中删除所有非字母数字字符串:
public static List<string> RemoveAllNonAlphanumeric(List<string> Input)
{
var TempList = new List<string>();
foreach (var CurrentString in Input)
{
if (Regex.IsMatch(CurrentString, "^[a-zA-Z0-9]+$"))
{
TempList.Add(CurrentString);
}
}
return TempList;
}