我得到一组从ArrayList返回的字符串。
这就是我在ArrayList中迭代时获得字符串的方式。
Welcome|
To|
Stackoverflow|
;
Welcome|
To|
Zootopia|
;
This|
is|
last - String|
;
我想基于";"对字符串进行标记像这样,
这就是我所做的:
for(String str: arrayList) {
//System.out.println(str);
if(str.contains(";")) {
StringTokenizer st = new StringTokenizer(str,";");
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
}
这就是我所期望的:
Welcome|To|Stackoverflow- one token
Welcome|To|Zootopia - one token
This|is|last-String|- one token
(因为让我们取第一个字符串:Welcome|To|Stackoverflow
,然后我想在"|"上进一步拆分它,这样我就可以获得单独的令牌)
在那之后,我想解析这个'|'字符。有什么更好的方法可以做到这一点吗?
StringTokenizer
是一个遗留类,由于兼容性原因而被保留,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人使用String的split方法或java.util.regex包。
class Tokenizer {
//for Java older than 8
public static String joinString(Iterable<String> strings, String separator) {
StringBuilder sb = new StringBuilder();
String sep = "";
for(String s: strings) {
sb.append(sep).append(s);
sep = separator;
}
return sb.toString();
}
public static void main(String args[]) {
ArrayList<String> strings = new ArrayList<String>() {{
add("Welcome|");
add("To|");
add("Stackoverflow|");
add(";");
add("Welcome|");
add("To|");
add("Zootopia|");
add(";");
add("This|");
add("is|");
add("last - String|");
add(";");
}};
//String in = String.join("", strings);
String in = joinString(strings, "");
for(String outerToken : in.split(";")) {
System.out.println(outerToken);
for(String innerToken : outerToken.split("\|")) {
System.out.println("t" + innerToken);
}
}
}
}