java处理隐藏字符串的问题,识别清除非法字符

System.out.println("‭".equals("‬"));
这个返回值是false,这两个字符串都不是空字符串,会出现在手机号码的前后

js也会遇到同样的问题

如果针对手机号,可以用正则匹配下,去掉数字以外的字符,str.replaceAll("[^0-9]", "")

讲道理System.out.println("".equals(""));的输出值是true啊

toString().trim() 自己整理字符串 比较吧。

返回true没毛病呀老铁

仅仅是System.out.println("‭".equals("‬"));输出是true没问题啊
如果值是通过读取其他途径得到的,比如文件,可能存在因编码导致的隐藏非法字符

System.out.println("".equals(""));就应该是返回true

把字符串加上trim()后再试试

System.out.println("‭".equals("‬"));
我执行这句,返回时false,

dasfdasfdsafasf

""字符串在Java中是对象在作怪,可以toString试试

复制我的代码执行看下,你们说的我都知道

"字符串在Java中是对象在作怪,可以toString试试

打印了下对应的assii码,对应的分别是45跟44,所以不相等,不过不知道题主是怎么输入的
下面是打印的代码

 System.out.println((byte)("‭".charAt(0))+":"+"‭".length());          //输出结果是45:1
 System.out.println((byte)("‬".charAt(0))+":"+"‬".length());          //输出结果是44:1
 System.out.println((char)45);                                                    //输出结果是-
 System.out.println((char)44);                                                    //输出结果是,

空字符串里面是不是有多出的空格或其他原因,把字符串加上trim()应该可以解决!

两种方法 1: 如果是手机号 你可以根据正则表达式来限时输入 2: 你可以把拿到的值进行一个空格的处理 trim()

返回false的是jdk1.7,1.8就是true

你这个是怎么敲出来的,我复制过来,执行确实是false;
手敲,一模一样,就是true