2014-01-26 7 views
2

Я хотел знать, как я могу сделать, чтобы полностью устранить ВСЕ специальных символов из строки. Другими словами, я хотел бы оставить только слова, тем самым устраняя любые другие символы, как + -О @ Ee и т.д.удалить все специальные символы из строки java

Теперь я использую

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

Но некоторые персонажи speacials все еще остаются.

+1

Определить "специальные символы". Например. 'é' - это ASCII письмо, которое может быть одним словом, поэтому ваш вопрос не содержит достаточной информации. – Simon

+0

эти @ # + èé <> §ù – user3187166

+0

Просто создайте функцию фильтрации, которая возвращает вашу строку после замены каждого нежелательного символа на "". –

ответ

8

Заменить класс regex \p{ASCII} с более строгим набором, который содержит только символы, которые вы разрешаете. Например,

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

сначала разлагается акцентировано символы, как é на две части e + combining ´ (нормальная форма Д), а затем регулярное выражение будет удалить любой символ, который не является ASCII-a..z или А.иМ.

0

Кодировка по умолчанию - unicode (utf-8) в java. В приведенном ниже коде используется представление символа 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)_+_+")); 



} 


} 

о/р: fleCKHE

Смежные вопросы