Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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正则表达式删除逗号';字符串中的数字之间的s_Java - Fatal编程技术网

Java正则表达式删除逗号';字符串中的数字之间的s

Java正则表达式删除逗号';字符串中的数字之间的s,java,Java,我试图解析一个字符串,以删除数字之间的逗号。请您阅读完整的问题,然后回答 让我们考虑下面的字符串。原样:) 约翰喜欢蛋糕,他总是拨“9894441234”点蛋糕。约翰的证书如下“ “姓名”:“约翰”、“小约翰”、“手机”:“9452341110” 假设我有一个java字符串中的上述文本行,现在,我想删除数字之间的所有逗号。我想在同一个字符串中替换以下内容: 带“9452341110”的“9452341110” 带“9452341110”的“9452341110” 不需要对字符串进行任何其他更改

我试图解析一个字符串,以删除数字之间的逗号。请您阅读完整的问题,然后回答

让我们考虑下面的字符串。原样:)

约翰喜欢蛋糕,他总是拨“9894441234”点蛋糕。约翰的证书如下“ “姓名”:“约翰”、“小约翰”、“手机”:“9452341110”

假设我有一个java字符串中的上述文本行,现在,我想删除数字之间的所有逗号。我想在同一个字符串中替换以下内容: 带“9452341110”的“9452341110” 带“9452341110”的“9452341110” 不需要对字符串进行任何其他更改

我可以在循环中迭代,当发现逗号时,我可以检查上一个索引和下一个索引中的数字,然后删除所需的逗号。但它看起来很难看,不是吗

如果我使用正则表达式“[0-9],[0-9]”,那么我会在逗号前后释放两个字符


我正在寻找一个有效的解决方案,而不是对整个字符串进行强制“搜索和替换”。实时字符串长度约为80K字符。谢谢。

您可以尝试以下正则表达式:

public static void main(String[] args) {
        String s = "asd,asdafs,123,456,789,asda,dsfds";
        System.out.println(s.replaceAll("(?<=\\d),(?=\\d)", "")); //positive look-behind for a digit and positive look-ahead for a digit.
// i.e, only (select and) remove the comma preceeded by a digit and  followed by another digit.
    }

您可以像这样尝试正则表达式:

public static void main(String[] args) {
        String s = "asd,asdafs,123,456,789,asda,dsfds";
        System.out.println(s.replaceAll("(?<=\\d),(?=\\d)", "")); //positive look-behind for a digit and positive look-ahead for a digit.
// i.e, only (select and) remove the comma preceeded by a digit and  followed by another digit.
    }
此正则表达式使用正后向和正前向仅将逗号与前一个数字和后一个数字匹配,而不将这些数字包含在匹配本身中:

(?<=\d),(?=\d)
(?此正则表达式使用正后向和正前向仅将逗号与前面的数字和后面的数字匹配,而不将这些数字包含在匹配本身中:

(?<=\d),(?=\d)

(?这是正确的解决方案。简单而优雅。谢谢。小心…字母的负前瞻与数字的正前瞻不同。根据您的输入字符串,此解决方案可能无法按预期工作…这是正确的解决方案。简单而优雅。谢谢。小心…字母的负前瞻不是正确的解决方案与数字的正向前瞻相同。根据您的输入字符串,此解决方案可能无法按预期工作…+1.您不需要字符集(
[]
)。(?+1.您不需要字符集(
[]
)。(?)?
(?<=\d),(?=\d)