我想知道如何才能完全消除所有中的特殊字符。換句話說,我只會離開的話,從而消除任何其他字符+ -OC @ EE等從字符串中刪除所有特殊字符java
現在我用
myString = Normalizer.normalize(myString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");
而是一些字符speacials仍然存在。
我想知道如何才能完全消除所有中的特殊字符。換句話說,我只會離開的話,從而消除任何其他字符+ -OC @ EE等從字符串中刪除所有特殊字符java
現在我用
myString = Normalizer.normalize(myString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");
而是一些字符speacials仍然存在。
用只包含允許的字符的更嚴格的set替換\p{ASCII}
regex類。例如,
myString = Normalizer.normalize(myString, Normalizer.Form.NFD).replaceAll("[^a-zA-Z]", "");
將第一分解重音字符像é
兩部分e
+ combining ´
(正常形式d),然後將正則表達式將刪除不是ASCII A..Z或A ... Z的任何字符。
java中的默認字符集是unicode(utf-8),下面的代碼使用unicode表示字符並檢查字符的unicode是否爲特殊字符; 下面給出的解決方案的時間複雜度= O(n);
public class RemoveSpecialCharacters {
/**
* @param args the command line arguments
*/
private static boolean isSpecialCharacter(int b)
{
if((b>=32 && b<=47)||(b>=58 && b<=64)||(b>=91 && b<=96) ||(b>=123 && b<=126)||b>126)
return true;
return false;
}
public static String removeSpecialCharacters(String a)
{
StringBuffer s=new StringBuffer(a);
int lenvar=s.length();
String myString="";
for(int i=0;i<lenvar;i++)
{
if(!isSpecialCharacter(s.charAt(i)))
{
myString+=s.charAt(i);
}
}
return myString;
}
public static void main(String[] args) {
System.out.println(removeSpecialCharacters("fleCKHE)_+_+"));
}
}
O/P:fleCKHE
定義 「特殊字符」。例如。 'é'是一個ASCII字母,可以放在一個單詞中,因此您的問題不包含足夠的信息。 – Simon
這些@#+èé<>第 – user3187166
只需製作一個過濾函數,在用「」替換每個不需要的字符後返回您的字符串。 –