删除最后一个“。”字符串中的一个或多个字符,但不从中间删除

时间:2019-01-07 11:28:04

标签: java string

我正在阅读一个文本文件,并使用它创建一个Excel文件。我设法进行了转换。但是有一个描述包含一个或两个我想删除的句号(。)。有时可能有一个句号,可能有两个或没有句号。我尝试使用replace,但它也删除了文本内部/中间的(。)。我不想那样做。

这些是一些示例

P/NO 9281195 . .                                 
TFR TO 202 . .                                                               
E/C 21118 GTLA/0267/0044505 NI                                                    
9259589 .PMGN JAYARATHNE .                       
GTLA/0267/0044505 662881724V .  

我想要的是

P/NO 9281195                              
TFR TO 202                                                            
E/C 21118 GTLA/0267/0044505 NI                                                    
9259589 .PMGN JAYARATHNE                
GTLA/0267/0044505 662881724V

2 个答案:

答案 0 :(得分:4)

  1. 解决方案:

    您可以使用正则表达式最后匹配一些(space point),然后将其替换为空

    String line = "P/NO 9281195 . .";
    line = line.replaceAll("(\\s*\\.)+$", "");
    
  2. 详细信息:

    • \s*表示0到无限的空间
    • \.得到一个点
    • (\\s*\\.)+可获得1到无限的空间/点对
    • $末尾比赛

答案 1 :(得分:3)

尝试

str.replaceAll("(\\.|\\s)+$", "")

此正则表达式将匹配任何.字符或该行末尾的任何空格。因此,您只需要将其替换为空字符串即可。