将列表字符串转换为java中的字符串列表

时间:2017-09-07 04:50:37

标签: java

我得到一个值为字符串格式的字符串列表,如下所示:“[”a“,”b“]”。我想将它们转换为字符串列表。我可以通过剥离前导和尾随大括号然后拆分逗号来完成此操作。但问题是我可能会收到与单个字符串相同的值也是“a”,我也希望将其转换为字符串列表。那么有什么方法可以概括这一点。

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案是使用Regex

您的表达式如下所示:"(.+?)"

.+?匹配任何字符(行终止符除外)

+? 量词 - 一个无限之间的匹配次数,尽可能少,根据需要进行扩展。

String tokens = "[\"a\", \"b,c\", \"test\"]";
String pattern = "\"(.+?)\"";

Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(tokens);

List<String> tokenList = new ArrayList<String>();
while (m.find()) {
    tokenList.add(m.group());
}

System.out.println(tokenList);

答案 1 :(得分:0)

您可以概括以下内容: library(dplyr) library(stringr) # get the variable names and form a text equation col_eqn <- paste0(str_subset(colnames(mtcars), "[a-z]", collapse = " + ") # run a normal mutate function parsing and evaluating the equation mtcars %>% mutate(new_col = eval(parse(text = col_eqn))) # mpg cyl disp hp drat wt qsec vs am gear carb new_col # 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 328.980 # 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 329.795 # 3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 259.580 # 4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 426.135 # 5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 590.310 # 6 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 385.540 # 7 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 656.920 # 8 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 270.980 # 9 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 299.570 # 10 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 350.460 我的输出

  

[a,b]