在从ArrayList返回的字符串集上拆分/Tokenize/Split字符串



我得到一组从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);
            }
        }
    }
}

最新更新