如何从列表<字符串>中删除所有非字母数字单词?

本文关键字:数字 单词 删除 列表 字符串 | 更新日期: 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;
    }