我正在编写一个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;
}
但是,我想知道是否有任何开源库可以实现相同的结果。
答案 0 :(得分:0)
您可以使用正则表达式进行分割
String[] data = input.split("(?=\\$)")
它将以这种格式(数组)返回您的数据。
[My name is , ${lastName}, , ${firstName}]
将其转换为列表
List<String> list = Arrays.asList(array);