Java Matcher.replaceAll()和String.replaceAll()don';似乎对星系s6不起作用
我需要从字符串中删除一些字符。目前我正在尝试删除“”(空格)和“-”(连字符)。我试过两种方法。他们都在Nexus5x上使用安卓N测试版。他们中没有一个能在三星GalaxyS6和安卓M上工作 第一种方法:Java Matcher.replaceAll()和String.replaceAll()don';似乎对星系s6不起作用,java,android,regex,Java,Android,Regex,我需要从字符串中删除一些字符。目前我正在尝试删除“”(空格)和“-”(连字符)。我试过两种方法。他们都在Nexus5x上使用安卓N测试版。他们中没有一个能在三星GalaxyS6和安卓M上工作 第一种方法: String normalizedNumber = phoneNumber.replaceAll("[ -]", ""); Pattern pattern = Pattern.compile("[ -]"); String normalizedNumber = pattern.matcher
String normalizedNumber = phoneNumber.replaceAll("[ -]", "");
Pattern pattern = Pattern.compile("[ -]");
String normalizedNumber = pattern.matcher(phoneNumber).replaceAll("");
第二种方法:
String normalizedNumber = phoneNumber.replaceAll("[ -]", "");
Pattern pattern = Pattern.compile("[ -]");
String normalizedNumber = pattern.matcher(phoneNumber).replaceAll("");
这样的基础课怎么会有不同的结果呢?我做错了什么
证明(调试器截图,在不同的PC上拍摄,这就是为什么调试器的样式不同):
这是Nexus
这是三星
请尝试方法1,并进行以下修改:
String normalizedNumber = phoneNumber.replace(" ","").replace("-","");
希望这在任何环境中都能起作用,因为它是一种直接的字符替换方法,其中as replaceAll始终是一种匹配字符的编译模式方法。当使用
String.charAt()
分析字符串时,结果表明,这些空格毕竟不是简单的空格,而是“”(代码160)。更改代码以删除所有空格修复了它:
String normalizedNumber = phoneNumber.replaceAll("[\\s-]", "");
代码在不同的手机上给出了不同的结果,因为这些号码来自联系人选取者的意图。看起来Samgung手机存储空间的数字与Nexus手机不同
谢谢大家的帮助
您是否绝对确定所有设备的代码、程序流程和输入都是相同的?这似乎不太可能。你能证明这是真的吗?@SamTebbs33与我在桌上使用Android Studio在两台设备上安装它们时使用的代码相同。相同的程序流,只调用一次,我在后面放了一个断点。@shmosel即使我用断点停止调试器并手动计算几个表达式,我也会得到相同的结果(这些表达式似乎是由Android Studio在设备上计算的)。你需要一个屏幕截图来相信我吗?@shmosel还考虑到与这些基本类相关的一些bug:也许这是另一个用AOSP补丁的Instance,但不是用三星代码补丁的Instance?我很确定这会起作用,谢谢。我会在周一试试,因为三星手机是我同事的,不是我的。