Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Matcher.replaceAll()和String.replaceAll()don';似乎对星系s6不起作用_Java_Android_Regex - Fatal编程技术网

Java Matcher.replaceAll()和String.replaceAll()don';似乎对星系s6不起作用

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

我需要从字符串中删除一些字符。目前我正在尝试删除“”(空格)和“-”(连字符)。我试过两种方法。他们都在Nexus5x上使用安卓N测试版。他们中没有一个能在三星GalaxyS6和安卓M上工作

第一种方法:

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?我很确定这会起作用,谢谢。我会在周一试试,因为三星手机是我同事的,不是我的。