从字符串java中删除所有特殊字符

时间:2014-01-26 10:52:37

标签: java android

我想知道如何完全消除字符串中特殊字符的 ALL 。换句话说,我只留下单词,因此消除任何其他字符为+-òç@èé等。

现在我用

myString =  Normalizer.normalize(myString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");

但是仍有一些人物仍然存在。

2 个答案:

答案 0 :(得分:9)

\p{ASCII}正则表达式类替换为仅包含允许的字符的更严格集合。例如,

myString =  Normalizer.normalize(myString, Normalizer.Form.NFD).replaceAll("[^a-zA-Z]", "");

首先会将重音字符é分解为两部分e + combining ´(正常形式D),然后正则表达式将删除任何非ASCII字符a..z或A..Z。

答案 1 :(得分:0)

java中的默认字符集是unicode(utf-8),下面的代码使用字符的unicode表示,并检查字符的unicode是否为speicial字符; 下面给出的解是时间复杂度= 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