使用Java从字符串中提取令牌

时间:2019-06-04 00:19:39

标签: java string

我正在编写一个Java程序来从String中提取令牌,如下所示: "My name is ${lastName}, ${firstName}."

我的预期输出将是一个数组 My name is${lastName},${firstName}.

我已经写了一个静态方法来做到这一点:

static List<String> tokenize(String str) {
    List<String> results = new ArrayList<String>();

    int idx = -1;
    int beginIndex = 0;
    while ((idx = str.indexOf("${")) > -1) {
        results.add(str.substring(beginIndex, idx));
        str = str.substring(idx + 2);

        idx = str.indexOf("}");
        if (idx > 0) {
            results.add("${" + str.substring(0, idx) + "}");
            str = str.substring(idx + 1);
        }
    }
    results.add(str);
    return results;
}

但是,我想知道是否有任何开源库可以实现相同的结果。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式进行分割

String[] data = input.split("(?=\\$)")

它将以这种格式(数组)返回您的数据。

[My name is , ${lastName}, , ${firstName}]

将其转换为列表

List<String> list = Arrays.asList(array);
相关问题