匹配分隔符管道之间的文本并将其删除并保持分隔符不变

时间:2014-07-08 19:30:45

标签: java regex string

我的问题是我有一个字符串,每四个字符后有一个分隔符。我需要将特定单词与分隔符之间的四个字符相匹配并将其删除。

例如:String txt =“ABCD | BABA | SSRV | LKGD”

现在检查字符串中的BABA,DGHT,LKGD,ADKC并返回字符串减去这些项目

因为我们找到了BABA和LKGD的匹配。所以结果应该是以下

结果:txt =“ABCD | SSRV”

有效的方法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用:

String str = "ABCD|BABA|SSRV|LKGD";
String repl = str.replaceFirst("\\|BABA(?=\\||$)", "");
//=> ABCD|SSRV|LKGD

要同时删除两个搜索字符串:

String str = "ABCD|BABA|SSRV|LKGD";
String repl = str.replaceAll("\\|(BABA|LKGD)(?=\\||$)", "");
//=> ABCD|SSRV

答案 1 :(得分:0)

使用番石榴,但非常易读。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.google.common.base.Joiner;

public class test {
    public static void main(String... args) {

        String txt = "ABCD|BABA|SSRV|LKGD";
        List<String> toBeRemoved = Arrays.asList(new String[] { "BABA", "DGHT","LKGD", "ADKC" });
        List<String> data = new ArrayList<>(Arrays.asList(txt.split("\\|")));
        data.removeAll(toBeRemoved);
        System.out.println(Joiner.on("|").join(data));

    }

}