用逗号替换逗号,后跟空格

时间:2017-04-26 14:09:13

标签: java regex

由于服务器端数据的格式化方式,我需要使用自己的函数重新格式化,并防止任何不需要的重新格式化,我想检查我重新格式化的字符串是否需要重新格式化。

这是条件和正则表达式。

String value = "test, test, test.";

if (!value.matches("/(\\s*, )/g")) {
    return value.replaceAll(",", ", ");
}
else {
    return value;
}

预期结果是,如果字符串为:Test,test,test,则会将其重新格式化为Test, test, test

我得到的行为是,即使代码中的value字符串进入if条件,它应该跳过它并进入else

咨询我的评论员后编辑

此处找到的最佳解决方案是",(?! )", ", ",但它解决了我甚至没有的问题,因此我将其简化为",(\\S)", ", $1"

建议的解决方案会在之后添加,,即使,位于字符串的末尾,这是我不想要的。

同样在我的问题中,我有一个冗余的if条件,我删除并简化了解决方案:

String value = "Test,test,test";

return value.replaceAll(",(\\S)", ", $1");

输出:

Test, test, test

2 个答案:

答案 0 :(得分:2)

您无需检查,只需使用:

value = value.replaceAll("\\s*,\\s*", ", ");

输入例如:

test ,   test, test.

<强>输出

test, test, test.

答案 1 :(得分:1)

您可以使用:

result = subject.replaceAll(",([^ ])", ", $1");

enter image description here

Demo