如何从列表<字符串>中删除所有非字母数字单词?
本文关键字:数字 单词 删除 列表 字符串 | 更新日期: 2023-09-27 18:17:48
如何从字符串列表(List<string>
)中删除所有非字母数字单词?
我找到了这个正则表达式!word.match(/^[[:alpha:]]+$/)
,但在c#中我如何获得一个新的列表,只包含纯字母数字字符串?
您可以使用LINQ。假设您有一个theList
(或数组或其他)与您的字符串:
var theNewList = theList.Where(item => item.All(ch => char.IsLetterOrDigit(ch)));
如果需要,在末尾添加.ToList()
或.ToArray()
。这是因为String
类实现了IEnumerable<char>
。
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);
}
对于LINQ + regex,您可以这样使用:
list = list.Where(s => Regex.IsMatch(s, "^[''p{L}0-9]*$")).ToList();
^[''p{L}0-9]*$
可以识别Unicode字母数字字符。如果只想使用ASCII, ^[a-zA-Z0-9]*$
也可以。
有一个静态帮助函数可以从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;
}