我有一個字符串列表:如何從列表中的字符串中刪除數字/數字<string>?
List<string> _words = ExtractWords(strippedHtml);
_words
包含1799個指標;在每個索引中都有一個字符串。
某些字符串只包含數字,例如:
" 2"
或"2013"
我想刪除這些字符串,所以最終的名單將只包含字母和數字不是字符串。
像"001hello"
這樣的字符串是好的,但"001"
不正確,應該刪除。
我有一個字符串列表:如何從列表中的字符串中刪除數字/數字<string>?
List<string> _words = ExtractWords(strippedHtml);
_words
包含1799個指標;在每個索引中都有一個字符串。
某些字符串只包含數字,例如:
" 2"
或"2013"
我想刪除這些字符串,所以最終的名單將只包含字母和數字不是字符串。
像"001hello"
這樣的字符串是好的,但"001"
不正確,應該刪除。
您可以使用LINQ爲:
_words = _words.Where(w => w.Any(c => !Char.IsDigit(c))).ToList();
這將過濾掉全部的數字由字符串,空字符串一起。
_words = _words.Where(w => !w.All(char.IsDigit))
.ToList();
通常,'Any()'比'!All()'更受歡迎,因爲Any可以在第一次不匹配後停止計算,而All必須評估序列的每個成員。 – neontapir
用於去除只由數字和空白的話:
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();
您可以使用傳統的foreach
和Integer.TryParse
來檢測數字。 這將比正則表達式或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);
}
}
創建一個將'string'轉換爲'char []數組'的小方法,然後如果索引包含一個數字,則用'「」替換它。 – Tdorno