我想從字符串中刪除所有特殊字符。允許的字符是AZ(大寫或小寫),數(shù)字(0-9),下劃線(_)或點(diǎn)號(。)。我有以下內(nèi)容,它可以工作,但是我懷疑(我知道?。┧皇呛苡行В?nbsp; public static string RemoveSpecialCharacters(string str) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < str.Length; i++) { if ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'A' && str[i] <= 'z' || (str[i] == '.' || str[i] == '_'))) { sb.Append(str[i]); } } return sb.ToString(); }最有效的方法是什么?正則表達(dá)式是什么樣子?與普通的字符串操作相比如何?將要清理的字符串會很短,通常長度在10到30個(gè)字符之間。
3 回答

牧羊人nacy
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
我建議創(chuàng)建一個(gè)簡單的查找表,您可以在靜態(tài)構(gòu)造函數(shù)中對其進(jìn)行初始化,以將任意字符組合設(shè)置為有效。這使您可以快速進(jìn)行一次檢查。
編輯
另外,為了提高速度,您將需要將StringBuilder的容量初始化為輸入字符串的長度。這將避免重新分配。這兩種方法共同為您提供速度和靈活性。
另一個(gè)編輯
我認(rèn)為編譯器可能會對其進(jìn)行優(yōu)化,但是考慮到樣式和效率,我建議使用foreach而不是for。
- 3 回答
- 0 關(guān)注
- 558 瀏覽
添加回答
舉報(bào)
0/150
提交
取消