繁体   English   中英

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

[英]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手机不同。

谢谢大家的帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM