删除所有点,但不删除\n数字-Java

删除所有点,但不删除\n数字-Java,java,replace,Java,Replace,我正在试着更换所有的电池。除1.02等数字外的字符串中 我有一个字符串:- String rM = "51.3L of water is provided. 23.3L is used." 如果我使用rM.replaceAll,那么每个点都将被替换,我希望我的字符串为:- 51.3L of water is provided 23.3L is used 可以用java做吗?我不是java开发人员,但你能用下面的模式来尝试吗 rM = rM.replaceAll("

我正在试着更换所有的电池。除1.02等数字外的字符串中

我有一个字符串:-

String rM = "51.3L of water is provided. 23.3L is used."
如果我使用rM.replaceAll,那么每个点都将被替换,我希望我的字符串为:-

51.3L of water is provided 23.3L is used

可以用java做吗?

我不是java开发人员,但你能用下面的模式来尝试吗

rM = rM.replaceAll("(?<=[a-z\\s])\\.", "");

是的,这是可能的。像下面这样的方法应该可以奏效。正则表达式应该检查元素是否以字符0-9开头。如果是,请不要更改元素。如果没有,请更换任何。使用空字符串

提供管柱rM=51.3L水。使用23.3L。; 字符串[]标记=rM.split; StringBuffer=新的StringBuffer; 对于字符串元素:标记{ if元素匹配[0-9]+.*{ buffer.appendelement+; }否则{ buffer.appendelement.replace.,+; } } System.out.printlnbuffer.toString; 输出:

51.3L of water is provided 23.3L is used
提供51.3升水,使用23.3升水
这里有一个简单的方法,假设您想要去掉直接放在字符后面的点,而字符不是空白

下面的代码基本上用空格分隔句子,并删除每个结果字符序列中的尾随点,然后将它们再次连接到单个字符串

公共静态无效字符串[]args{ //例句 提供管柱rM=51.3L水,使用23.3L水。; //用空格分隔句子 字符串[]parts=rM.split\\s+; //检查所有部件 对于int i=0;i 提供51.3升水,使用23.3升水 用正确的正则表达式replaceAll可以为您完成

使用否定的向前看,向后看,寻找一个''.',而不是在十进制数的中间。

rM.replaceAll("(?<![\\d])\\.(?![\\d]+)", "")

使用负前瞻,您可以使用\。?![\d]\.[\d]

输出:

51.3L of water is provided 23.3L is used

这将是一个更好的解决方案,但目前它不起作用。我来看看我能不能再接再厉this@RobEvans嗨,你能再确认一下吗?你拿到了!提供管柱rM=51.3L水。使用23.3L。;System.out.printlnrM.replaceAll?@RobEvans感谢您的确认。如果有两个点,则不更换。它只删除1。