如何从List <string>中删除所有非字母数字字

时间:2015-10-15 13:52:43

标签: c# regex

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

我发现了这个正则表达式!word.match(/^[[:alpha:]]+$/)但是在C#中如何获得一个只包含纯字母数字字符串的新列表?

4 个答案:

答案 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;
    }