如何从List <string>?</string>中的字符串中删除数字/数字

时间:2013-06-27 17:05:19

标签: c# linq

我有一个字符串列表:

List<string> _words = ExtractWords(strippedHtml);

_words包含1799个索引;在每个索引中都有一个字符串。

有些字符串只包含数字,例如:

" 2""2013"

我想删除这些字符串,因此最后List只包含字母而不是数字的字符串。

"001hello"之类的字符串可以,但"001"不正常,应删除。

4 个答案:

答案 0 :(得分:6)

您可以使用LINQ:

_words = _words.Where(w => w.Any(c => !Char.IsDigit(c))).ToList();

这将过滤掉完全由数字组成的字符串以及空字符串。

答案 1 :(得分:4)

_words = _words.Where(w => !w.All(char.IsDigit))
               .ToList();

答案 2 :(得分:2)

删除仅由数字空白组成的单词:

var good = new List<string>();
var _regex = new Regex(@"^[\d\s]*$");
foreach (var s in _words) {
    if (!_regex.Match(s).Success)
        good.Add(s);
}

如果你想使用这样的LINQ应该这样做:

_words = _words.Where(w => w.Any(c => !char.IsDigit(c) && !char.IsWhiteSpace(c)))
               .ToList();

答案 3 :(得分:1)

您可以使用传统的foreachInteger.TryParse来检测数字。 这将比Regex或LINQ更快。

var stringsWithoutNumbers = new List<string>();
foreach (var str in _words)
{
    int n;
    bool isNumeric = int.TryParse(str, out n);
    if (!isNumeric)
    {
        stringsWithoutNumbers.Add(str);
    }
}