[英]Java: String.replaceAll() vs matcher.replaceAll() in a loop
[英]Matcher.replaceAll() and String.replaceAll() don't seem to work on Galaxy S 6
我需要从字符串中删除一些字符。 目前我正试图删除''(空格)和' - '(连字符)。 我试过两种方法。 它们都适用于带有Android N Beta的Nexus 5X。 它们都不适用于搭载Android M的三星Galaxy S 6。
第一种方法:
String normalizedNumber = phoneNumber.replaceAll("[ -]", "");
第二种方法:
Pattern pattern = Pattern.compile("[ -]");
String normalizedNumber = pattern.matcher(phoneNumber).replaceAll("");
这些基本课程怎么能给出不同的结果呢? 我究竟做错了什么?
证明(调试器截图,在不同的PC上拍摄,这就是为什么样式不同):
这是Nexus
您可以尝试使用方法1进行以下修改:
String normalizedNumber = phoneNumber.replace(" ","").replace("-","");
希望这应该适用于任何环境,因为它是一种直接的字符替换方法,因为replaceAll始终是匹配字符的编译模式方法
神秘解决了。 当使用String.charAt()
来分析字符串时,事实证明这些空格毕竟不是简单空格,而是“ 非破坏空格 ”(代码160)。 更改代码以删除所有空格修复它:
String normalizedNumber = phoneNumber.replaceAll("[\\s-]", "");
代码在不同的手机上给出了不同的结果,因为这些数字来自联系人选择器Intent。 Samgung手机似乎存储的数量与Nexus手机不同。
谢谢大家的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.