Java-使用“ split()”的帮助 - java

我正在尝试用Java编写一个代码,其功能类似于Java中的“ split()”命令,但不删除与正则表达式匹配的部分。例如:

String str = "ABC---DEF***GHI///JKL#@!"; 

然后

`str.split("[A-Za-z0-9]+")` returns `{"---", "***", "///", "#@!"}`. 

但是,我想编写一种类似于split()的方法,该方法拆分正则表达式的字符串AT匹配项,而不是包围它。

`An example of an implementaion would be: 
public static String[] splitString(String input, String regex)` 

从而:

`splitString("ABC---123DEF***456GHI///JKL9#@6!", "[A-Za-z0-9]+")` 

会给:

`{"ABC", "---", "123DEF", "***", "456GHI", "///", "JKL9", "#@", "6", "!"}` 

参考方案

正如其他海报所指出的那样,一种方法是使用您的图案,然后使用相反的图案。这可以通过单个正则表达式([A-Za-z0-9]*)([^A-Za-z0-9]*)完成。

String str = "ABC---DEF***GHI///JKL#@!";
Matcher m = Pattern.compile("([A-Za-z0-9]*)([^A-Za-z0-9]*)").matcher(str);
List<String> result = new ArrayList<>();
while(m.find()) {
    for(int i=1; i<=m.groupCount(); i++) {
        if(!m.group(i).isEmpty()) {
            result.add(m.group(i));
        }
    }
}
System.out.println(StringUtils.join(result, ", "));

输出:

ABC, ---, 123DEF, ***, 456GHI, ///, JKL9, #@, 6, !

java split regex-字符的任意组合 - java

我正在使用3个字符分割字符串:空格,破折号和逗号我想要的是能够使用这3个字符的任意组合进行拆分,例如:-,(破折号后跟逗号)或,--(逗号后加2破折号)或- , -(破折号,逗号间隔破折号)等 String address = "Sector -18B, Dwarka"; String[] addressParts = address.s…

在Java中分割字串 - java

我正在从程序中获取此字符串[user1, user2] 我需要将其拆分为String1 = user1 String2 = user2 参考方案 您可以这样做,以在逗号分隔之前安全地删除任何方括号或空格:String input = "[user1, user2]"; String[] strings = input.replaceAll…

如何在Java中摆脱逗号分隔的字符串中的重复项? - java

我有一个字符串place =“ city,city,town”。我需要得到“城市,城镇”。基本上消除以逗号分隔的字符串中的重复条目。place.split(“,”);会给我String数组。我想知道是否可以将此数组传递给HashSet之类的东西,它会自动删除重复项,但是尝试执行以下操作:HashSet test=new HashSet(a.split(�…

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

Java RegEx中的单词边界\ b - java

我在使用\b作为Java Regex中的单词定界符时遇到困难。对于text = "/* sql statement */ INSERT INTO someTable"; Pattern.compile("(?i)\binsert\b");找不到匹配项Pattern insPtrn = Pattern.compile(&…