正則表達式的任何想法都需要刪除少於3個字母的單詞?所以它會發現「ii它是bbb貓老鼠帽子」等,但不是「四,三,二」。c#正則表達式刪除少於3個字母的單詞?
回答
我要出去在這裏的肢體上,並拋出一個非正則表達式的解決方案在你:
public static string StripWordsWithLessThanXLetters(string input, int x)
{
var inputElements = input.Split(' ');
var resultBuilder = new StringBuilder();
foreach (var element in inputElements)
{
if (element.Length >= x)
{
resultBuilder.Append(element + " ");
}
}
return resultBuilder.ToString().Trim();
}
這是比其他解決方案更詳細,但我認爲使用LINQ的解決方案可能會超過其淨效益的性能開銷,和正則表達式發生同樣的費用(有更多的複雜性可能維護。)
是的,可能不應該使用正則表達式:S。謝謝您的幫助 。並感謝所有其他解決方案。 – user685590 2011-06-14 13:54:37
這和Linq選擇之間的性能差異可以忽略不計。我用這個輸入字符串「一二三四五六七八九十」寫了一個100萬次迭代的快速基準。 for循環/ StringBuilder方法耗時2.4891901秒,Linq選擇方法耗時2.4480243秒。 – MattDavey 2011-06-14 13:59:39
有趣的是,正則表達式解決方案耗時1.4886646秒:s – MattDavey 2011-06-14 14:02:10
不一定需要這樣的正則表達式,它可以用一個簡單的linq選擇來完成。
string[] words = inputString.Split(' ');
var longWords = words.Where(x => x.Length > 3);
string outputString = String.Join(" ", longWords.ToArray());
地獄你甚至可以做到在一個代碼行:
outputString = String.Join(" ", inputString.Split(' ').Where(x => x.Length > 3).ToArray());
正則表達式匹配長度爲1的話3將\b\w{1,3}\b
,用空字符串替換這些比賽。
Regex re = new Regex(@"\b\w{1,3}\b");
var result = re.Replace(input, "");
要同時刪除,你可以使用雙位:(本書雖然它會留下在字符串的開始/結束一個空格)
Regex re = new Regex(@"\s*\b\w{1,3}\b\s*");
var result = re.Replace(input, " ");
string qText = "Long or not long sample text";
var inputWords = qText.Split(' ').ToList();
var rem = (from c in inputWords
where c.Length > 3
select c).ToList();
請添加一些文字/描述以改善您的怒氣 – 2015-03-26 10:38:19
- 1. 用正則表達式選擇3個字母的單詞
- 2. Spark DataFrame轉換 - 刪除少於3個字母的單詞
- 3. 正則表達式必須至少有3個字母字符
- 4. 用於搜索大寫字母/單詞的正則表達式?
- 5. 刪除短於n的所有單詞的正則表達式
- 6. 正則表達式C++刪除所有非字母字符
- 7. 刪除包含任何不是字母正則表達式的單詞
- 8. 由「。-_」分隔的單詞的正則表達式,包括至少一個字母
- 9. 正則表達式找出相差一個字母的單詞
- 10. 正則表達式第一個單詞的大寫字母
- 11. 正則表達式大寫單詞的第二個字母
- 12. 刪除啓動字和結尾的單詞正則表達式
- 13. 用3個或更多大寫字母查找單詞的正則表達式
- 14. 使用正則表達式掩蓋除一個單詞的第一個字母
- 15. 刪除長詞正則表達式
- 16. 刪除包含某個單詞的括號 - 正則表達式
- 17. 刪除首字母縮寫詞的正則表達式的正則表達式是什麼?
- 18. 正則表達式匹配單詞至少一個字符
- 19. 以大寫字母開頭的單詞的正則表達式
- 20. 正則表達式匹配三個字母和刪除三個字母
- 21. 正則表達式除字母之外
- 22. 正則表達式除了字母(javascript)
- 23. 正則表達式從列表中刪除非字母詞AZ AZ(例外)
- 24. 正則表達式中的單詞「wariant」之前沒有字母
- 25. 正則表達式匹配包含某些字母的單詞
- 26. 正則表達式找到丟失字母的單詞
- 27. 正則表達式刪除,除了用字母
- 28. 正則表達式刪除字母,符號除外
- 29. 正則表達式:單個單詞
- 30. AWK正則表達式轉換3字母的單詞用「a」到大寫
「二」有三個字母 – 2011-06-14 13:33:18
如若話「BBB」, '貓','老鼠'和'帽子'被刪除?這些單詞不少於3個字母。 – 2011-06-14 13:34:09
我認爲你不應該在這裏使用正則表達式,當三行簡單的代碼可以做同樣的事時,不要使用正則表達式。 – 2011-06-14 13:34:41