我需要像「joe($ 3,004.50)」這樣的文本過濾到3004.50,但在正則表達式中很糟糕,找不到合適的解決方案。所以只有數字和時段應該保留 - 所有其他過濾。我使用C#和VS.net 2008年框架3.5正則表達式刪除所有(非數字或期)
回答
這應做到:
string s = "joe ($3,004.50)";
s = Regex.Replace(s, "[^0-9.]", "");
的正則表達式是:
[^0-9.]
可以緩存正則表達式:
Regex not_num_period = new Regex("[^0-9.]")
然後使用:
string result = not_num_period.Replace("joe ($3,004.50)", "");
然而,您應該記住,一些文化在編寫貨幣金額時有不同的慣例,例如:3.004,50。
懶得ATM進行驗證,但並不需要轉義的。 ? – 2010-06-16 17:38:20
@Andrew:不,在一個字符類中,'.'沒有特別的意義。 – 2010-06-16 17:38:58
移除違規字符的方法可能是有問題的。如果字符串中有另一個.
會怎麼樣?它不會被刪除,但它應該!
刪除非數字或句點,字符串joe.smith ($3,004.50)
將轉換爲不可解析的.3004.50
。
Imho,最好匹配一個特定的模式,並使用組提取它。簡單的東西是要找到所有連續逗號,數字,並用正則表達式的時期:
[\d,\.]+
樣品試運行:
Pattern understood as:
[\d,\.]+
Enter string to check if matches pattern
> a2.3 fjdfadfj34 34j3424 2,300 adsfa
Group 0 match: "2.3"
Group 0 match: "34"
Group 0 match: "34"
Group 0 match: "3424"
Group 0 match: "2,300"
然後每場比賽,刪除所有逗號和發送到解析器。要處理類似12.323.344
的情況,您可以進行另一次檢查,看看匹配的子字符串最多隻有一個.
。
對於接受的答案,MatthewGunn提出了一個有效的觀點,因爲整個字符串中的所有數字,逗號和句點都會凝聚在一起。這將避免:
string s = "joe.smith ($3,004.50)";
Regex r = new Regex(@"(?:^|[^w.,])(\d[\d,.]+)(?=\W|$)/)");
Match m = r.match(s);
string v = null;
if (m.Success) {
v = m.Groups[1].Value;
v = Regex.Replace(v, ",", "");
}
你正在處理一個字符串 - 字符串是一個IEumerable<char>
,所以你可以使用LINQ:
var input = "joe ($3,004.50)";
var result = String.Join("", input.Where(c => Char.IsDigit(c) || c == '.'));
Console.WriteLine(result); // 3004.50
- 1. 正則表達式:刪除所有,但?
- 2. 刪除所有正則表達式
- 3. 正則表達式從數字刪除字符,但並非所有的字符
- 4. 正則表達式 - 刪除所有非字母數字字符CRLF問題
- 5. powershell正則表達式刪除數字
- 6. 正則表達式:去除非字母數字或標點
- 7. 正則表達式的表達式對所有非字母數字符號
- 8. 如何用Perl正則表達式刪除所有連字符?
- 9. 正則表達式刪除所有特殊字符的URL
- 10. VBScript正則表達式刪除所有字符,但數字和連字符(「 - 」)
- 11. 正則表達式刪除連字符
- 12. 正則表達式:刪除白字
- 13. 正則表達式匹配所有單數或雙數數字
- 14. 正則表達式,刪除除了數字以外的所有東西
- 15. 蟒蛇正則表達式,刪除所有除\ d \ S \ W
- 16. 正則表達式來排除所有字符,除了字母
- 17. PHP正則表達式刪除數字和句點以外的所有字符
- 18. 刪除非Alpha字符正則表達式
- 19. 正則表達式從UTF8字符串中刪除非字母數字字符
- 20. 正則表達式 - 剝離非數字並刪除美分(如果有的話)
- 21. 刪除。*正則表達式打破正則表達式
- 22. Python的正則表達式刪除Word用正則表達式
- 23. 正則表達式刪除非字母數字字符和點後的所有字符?
- 24. 刪除一切有10位數字的正則表達式
- 25. 正則表達式可以接受所有數字或所有字母
- 26. 正則表達式爲所有字母
- 27. Ultraedit正則表達式來刪除包含數字的所有單詞
- 28. 正則表達式刪除除
- 29. 刪除所有非單詞字符,除非&或'模式
- 30. 刪除短於n的所有單詞的正則表達式
不知道你能做到這一點,謝謝! – VoodooChild 2010-06-16 17:41:14
非常感謝:) – 2010-06-16 18:27:58
'joe.smith($ 3,004.50)'?簡單地刪除冒犯的字符類可能會非常錯誤。 – 2015-12-03 09:23:49