2014-06-23 164 views
0

我有一個字符串作爲輸入。
從字符串中去除下列不需要的字符的最佳方法是什麼?從字符串中去除不需要的字符

[email protected]#$%^&*()_+-={}[]:";'<>?,./`~\|) 

除了迭代字符串和匹配字符?

+0

第1步:附上方括號中的那些字符'[]'。第二步:轉義內方括號'\]'。第3步:?第4步:利潤! – HamZa

+5

指定要保留的字符更安全。 – ikegami

+0

你提到''''和'''但是'''和'''怎麼樣? – ikegami

回答

3

它更安全地指定要保留哪些字符。

在這種情況下,您似乎已列出標準鍵盤上的每個標點符號都將被剝離。你唯一沒有指定的是字母,數字和空格。

因此使用否定的字符類,將過濾掉任何不匹配所需的字符來實現更清晰和更安全的方式相同的目標:

s/[^a-zA-Z0-9\s]+//g; 
+0

我會繼續這種做法,只要您(OP)希望防止Unicode字符,所以德語ß,拉丁字符等將被刪除。 – OnlineCop

+0

但也許使用tr ///而不是s ///。它可能會更有效率。 –

+0

@DaveCross我覺得這可能是一個不成熟的優化,因爲我特別想使用'\ s'字符類,也許OP可能想要使用其他字符類。但是,你是正確的,下面的等價於我的正則表達式:'tr/a-zA-Z0-9 \ t \ n \ r // cd;' – Miller

相關問題