Java:将特定词替换为其他内容不变

时间:2019-03-07 12:30:51

标签: java regex regex-group

我是新来的,您想帮我吗?

可能会有

这样的行
  

389392“放大镜” 1 0 4 392 6616 0 8529270   0 |

     

390391“装甲站” 1 0 6 391 6630 0 6800 0 |

     

391391“武器架” 1 0 6 390 6631 0 6800 0 |

我想从第二个数字中减去20。

  

390391“装甲站” 1 0 6 391 6630 0 6800 0 |

收件人

  

390 371“装甲站” 1 0 6 391 6630 0 6800 0 |

但是我不知道该怎么做。

我可能会得到第二个数字,然后我不知道该如何处理。 这行中可能有相同的数字,但我只想替换第二个数字。

非常感谢。

================================================ ============================ 更新

 Pattern p = Pattern.compile("^(\\d+)\\s+3(9)[0-2]\\s\S+\\s+(1)\\s+\\d\\s+6") ;
            Matcher m = p.matcher("6621   391   \"weaponrack\"   1   0   6   371   6631   0   6800   0   |") ;

我想要这样的东西

m.group(2).replace(7);

但是我可以找到类似的方法。

我看到一些文档说我们可以使用“ $”来获取组引用,并且没有做更多解释。

好吧,我从文本中读取行,并使用“ ^(\ d +)\ s + 3(7)0-21(\ s + \ d \ s +)6” 找到匹配的行。 然后我需要将39 [0-2]替换为37 [0-2]。 可以通过减去20或其他我不在乎的方式来完成。

1 个答案:

答案 0 :(得分:0)

好吧,@ Ctorres现在给我一个主意。

当我找到匹配的行时,将其放入char数组中。

首先,我们跳过数组的第一个数字和空格。

然后将字符“ 9”更改为“ 7”。

但是我认为这真的很复杂。