从java字符串中删除所有特殊字符
我想知道如何才能完全消除字符串中的所有特殊字符。换言之,我只留下单词,这样就消除了+-òçèè等任何其他字符 现在我用从java字符串中删除所有特殊字符,java,android,Java,Android,我想知道如何才能完全消除字符串中的所有特殊字符。换言之,我只留下单词,这样就消除了+-òçèè等任何其他字符 现在我用 myString = Normalizer.normalize(myString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", ""); 但是一些特殊字符仍然保留。将\p{ASCII}正则表达式类替换为只包含您允许的字符的更严格的集合。比如说, myString = Normalizer.normalize(myStr
myString = Normalizer.normalize(myString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");
但是一些特殊字符仍然保留。将
\p{ASCII}
正则表达式类替换为只包含您允许的字符的更严格的集合。比如说,
myString = Normalizer.normalize(myString, Normalizer.Form.NFD).replaceAll("[^a-zA-Z]", "");
将首先将重音字符(如
e
分解为两部分e
+组合´
(标准格式D),然后正则表达式将删除任何不是ASCII a..z或a..z的字符。java中的默认字符集是unicode(utf-8),下面的代码使用字符的unicode表示形式,并检查字符的unicode是否为特殊字符;
下面给出的解的时间复杂度为O(n)
public类删除特殊字符{
/**
*@param指定命令行参数
*/
私有静态布尔isSpecialCharacter(int b)
{
如果((b>=32&&b=58&&b=91&&b=123&&b126)
返回true;
返回false;
}
公共静态字符串删除特殊字符(字符串a)
{
StringBuffer s=新的StringBuffer(a);
int lenvar=s.length();
字符串myString=“”;
for(int i=0;iDefine“特殊字符”。例如,是一个ASCII字母,可以在一个单词中,因此您的问题不包含足够的信息。只需创建一个过滤函数,在将每个不需要的字符替换为“.@#+#§ù
”后返回字符串-仅删除这些字符?所有其他字符都可以吗?
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)_+_+"));
}
}