JAVA特殊字符过滤方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA特殊字符过滤方法相关的知识,希望对你有一定的参考价值。
我在一个传入一个字符串,字符串里面含有非法字符的话就过滤掉
非法字符如下 !#%'?;\&`<>$^"/@~∩_∩,~•#×※§≈★… 、! ? • 《》 ” “ °0oo0 |[]『 』 【】^•〖〗「」〃±∑∏∪∩∈√⊥⊙∮≡≌∠∞∵∫℃£‰ ..
然后返回一个过滤掉这些的字符串
// 只允许字母和数字
// String regEx = "[^a-zA-Z0-9]";
// 清除掉所有特殊字符
String regEx="[`~!@#$%^&*()+=|':;',\\[\\].<>/?~!@#¥%……&*()——+|【】‘;:”“’。,、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
追问
哥们.. 你这个网上找的 不行...
我自己放几个连续一起的关键字就没法了..
呵呵,我没测试过,网上流传的就是这个版本。不行的话,那就要根据输入的中文编码不同来判断了,中文占用两个以上字节。所以首先要确认编码,然后用字节数组判断
例如:ANSI 编码,"中文123" (占7字节)
Unicode 编码,"中文123" (占10字节),具体细节比较复杂,要参考相关书籍,有关字节字符ASC码等。
自己定义过滤法则:
public class FilterSpecial
public static String filter(String input)//传值到这里
if(!hasSpecialChars(input))//如果没有,就返回原字符串
return input;
StringBuffer filtered =new StringBuffer(input.length());
char c;
for(int i=0; i ':filtered.append( "> "); break;
case ' " ':filtered.append( "&uot; "); break;
case '& ':filtered.append( "& "); break;
default: filtered.append(c);
return (filtered.toString());
public static boolean hasSpecialChars(String input)//判断特殊字符
boolean flag=false;
if((input!=null)&&(input.length()> 0))
char c;
for(int i=0; i ': flag=true; break;
case ' < ': flag=true; break;
case ' " ': flag=true; break;
case '& ': flag=true; break;
return flag;
或者用强行替代法:
...
public String replace(char oldChar, char newChar)
...
谢谢了哟.. 再等等看有其他的方法没有
追答哈哈,有时候最古老的方法最狠。正则表达式那要花一些脑筋上去了。
追问我就是觉得正则有点痛苦..所以还没写.
谢谢了.
怎么办呢?反过来想,扣除这些非法字符后,还剩下什么字符?应该是ASC码和中文字符的子集了。所以,过滤条件是:保留特定ASC码(不需要过滤的ASC码),和中文字符。完成。追问
的确资源消耗这是个问题...可是这个也没法避免 ....因为有这个需求,只能说尽量去优化一下..
扣除这些非法字符后,还剩下什么字符? 还剩下我需要的汉字,但是有可能有的时候也会需要出现符号,只要这些符号不是出现在非法符号里面就没什么..
保留特定ASC码(不需要过滤的ASC码),和中文字符。完成? 能写例子不
以前没有这么做过.. 如果能提供个例子,就非常感谢了
java正则表达式过滤特殊字符
现有一个字符串,要求不能包含' " %这样的特殊字符,只需要用正则表达式校验出来就行了,自己写的是[^\\'\\\"\\%],显然这是不对的。。求大神帮忙!!请注意是java程序
参考技术A String regexp = "[^'\\"%]*";String string = "abc%";
System.out.println (string.matches (regexp));本回答被提问者采纳 参考技术B public class Test40032
public static void main(String[] args)
String regx = "['\\"%]";
String input = "11%11";
System.out.println(input);
Pattern p = Pattern.compile(regx);
Matcher m = p.matcher(input);
System.out.println(!m.find());
以上是关于JAVA特殊字符过滤方法的主要内容,如果未能解决你的问题,请参考以下文章