提取String部件并添加到ArrayList

时间:2014-04-12 16:53:52

标签: java string arraylist split substring

我对String substring选项有疑问。 我想将一些String中的部分添加到ArrayList中,但我只想添加第一个文本。

ArrayList<String> arr = new ArrayList<String>();
String text = "[\"text1\",\"text2\",\"text3\"]";

   text = text.substring(text.indexOf("\"") + 1);
   text = text.substring(0, text.indexOf("\""));

   arr.add(text);


   for (int i = 0; i < arr.size(); i++) {
        System.out.println(arr.get(i));
   }

这个输出是:

text1

我想添加所有&#34;文本&#34;在数组中,每个人都处于不同的位置:

text1
text2
text3

有可能这样做吗?提前谢谢。

4 个答案:

答案 0 :(得分:2)

执行命令

    String text = "[\"text1\",\"text2\",\"text3\"]";
    Pattern p = Pattern.compile("\"(.*?)\"");
    Matcher m = p.matcher(text);
    while (m.find()) {
        System.out.println(m.group());
    }

<强>输出:

"text1"
"text2"
"text3"

答案 1 :(得分:1)

String#split使用正则表达式,不要将数组中的第一个和最后一个元素添加到arraylist。

String str[]=text.split("\"(,)?");
ArrayList<String> arr=new ArrayList<String>();

for(int i=1;i<str.length-1;i++){
 System.out.print(str[i]+"\n");
    arr.add(str[i]);

                }

<强>输出

text1
text2
text3

答案 2 :(得分:1)

您可以非常轻松地使用split

public static void main(final String[] args) throws Exception {
    final String input = "[\"text1\",\"text2\",\"text3\"]";
    final List<String> output = new ArrayList<>();
    for(final String item : input.replaceAll("^\\[\"|\"\\]$", "").split("\",\"")) {
        output.add(item);
    }
    for(final String item : output) {
        System.out.println(item);
    }
}

输出:

text1
text2
text3

你试图解析的String看起来非常像Collection.toString的输出,如果是这样,那么这就错了......

答案 3 :(得分:0)

正则表达式模式怎么样?:

String text = "[\"text1\",\"text2\",\"text3\"]";
String[] split = text.split("\"(,)?");