我将此文本标记为如下:
∅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]
答案 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("∅"));