我对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
有可能这样做吗?提前谢谢。
答案 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("\"(,)?");