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

时间:2015-03-12 23:34:13

标签: java string

我将此文本标记为如下:

  

∅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 个答案:

答案 0 :(得分:1)

如果您想使用正则表达式解决方案,请尝试以下操作:

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

此模式将匹配∅后跟任意数量的非∅,这应该可以解决问题。

答案 1 :(得分:0)

使用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("∅"));