有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在两个字符串或两个字符之间获取多个字符串

我将此文本标记如下:

∅habbaz∅abdelkrim∅habbaz∅abdelkrim∅habbaz∅abdelkrim

我想得到字符之间的每个字符串。我尝试了以下方法:

ArrayList<String> ta = new ArrayList();
String test=t2.getText();
String str = test;
Pattern pattern = Pattern.compile("∅(.*?)∅");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {

    ta.add(matcher.group(1));

}    
t3.setText(ta.toString());

它应该给我:

[habbaz,abdelkrim, habbaz,abdelkrim, habbaz,abdelkrim]

但它只给了我:

[habbaz, habbaz, habbaz]


共 (2) 个答案

  1. # 1 楼答案

    使用split

    String input = "∅habbaz∅abdelkrim∅habbaz∅abdelkrim∅habbaz∅abdelkrim";
    String[] tokens = input.split("∅");
    

    这将生成分隔符之间的字符串数组。请注意,数组中的第一个字符串将是"",即空字符串,因为您的输入字符串以分隔符开头。要避免这种情况,请在拆分(if (input.startsWith("∅")) {input = input.substring(1);})之前获取输入的子字符串,或处理生成的标记以排除任何空字符串

    要将令牌转换为ArrayList,请使用以下命令:

    ArrayList ta = new ArrayList<Element>(Arrays.asList(tokens))
    

    或者你可以写:

    List ta = Arrays.asList(input.split("∅"));
    
  2. # 2 楼答案

    如果要使用正则表达式解决方案,请尝试以下方法:

    Pattern pattern = Pattern.compile("∅([^∅]*)");
    

    此图案将与a匹配∅ 后跟任意数量的非-∅, 这应该会起作用