我需要从字符串中删除一些字符。目前我正试图删除' ' (空间)和' - ' (连字符)。我试过两种方法。它们都适用于带有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
答案 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手机不同。
感谢大家的帮助。