Matcher.replaceAll()和String.replaceAll()似乎不适用于Galaxy S 6

时间:2016-08-05 21:15:44

标签: java android regex

我需要从字符串中删除一些字符。目前我正试图删除' ' (空间)和' - ' (连字符)。我试过两种方法。它们都适用于带有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

Nexus 这是三星

Samsung

2 个答案:

答案 0 :(得分:1)

请您尝试使用方法1进行以下修改:

String normalizedNumber = phoneNumber.replace(" ","").replace("-","");

希望这应该适用于任何环境,因为它是一种直接的字符替换方法,因为replaceAll始终是匹配字符的编译模式方法

答案 1 :(得分:0)

神秘解决了。当使用String.charAt()来分析字符串时,事实证明这些空格毕竟不是简单的空格,而是“non breaking spaces”(代码160)。更改代码以删除所有空格修复它:

String normalizedNumber = phoneNumber.replaceAll("[\\s-]", "");

代码在不同的手机上给出了不同的结果,因为这些数字来自联系人选择器Intent。 Samgung手机似乎存储的数量与Nexus手机不同。

感谢大家的帮助。

https://en.wikipedia.org/wiki/Non-breaking_space

相关问题