Java 是否获取多次出现的子字符串?

Java 是否获取多次出现的子字符串?,java,string,substring,Java,String,Substring,我看过很多文章如何使用regex实现这一点 String str="The colors are [blue], [yellow], and [green]"; 这是我的for循环,它不断给我一个字符串超出范围的错误: 对于(int i=0;i我想说,如果你严格地不想使用regex,那么你想要这样的东西……无论出于什么原因。regex几乎肯定会同样快,代码看起来也会更好。但无论如何,下面是一个示例代码,它看起来是什么样子的: Here is my for loop that keeps giv

我看过很多文章如何使用regex实现这一点

String str="The colors are [blue], [yellow], and [green]";
这是我的for循环,它不断给我一个字符串超出范围的错误:

对于(int i=0;i我想说,如果你严格地不想使用regex,那么你想要这样的东西……无论出于什么原因。regex几乎肯定会同样快,代码看起来也会更好。但无论如何,下面是一个示例代码,它看起来是什么样子的:

Here is my for loop that keeps giving me a string out of range error:
   for (int i=0;i<str.length();i++){
      String result = str.substring(str.indexOf("[") + 1, str.indexOf("]"));
      System.out.println(result);
String str=“颜色为[蓝色]、[黄色]和[绿色]”;
ArrayList arr=新的ArrayList();
对于(int i=str.indexOf('[',0);i!=-1;i=str.indexOf('[',i+1)){
arr.add(str.substring(i+1,str.indexOf(']',i));
}
用于(字符串s:arr){
系统输出打印项次;
}

因此,您获取第一次出现的
[
和第一次出现的
]
之间的内容。为什么它要获取所有内容?要获取未知数量的内容,您可能需要一个循环。for(int i=0;i您认为
indexOf
有什么作用?提示:我的上一个注释提到了“first”。请注意String.indexOf重载:
public int indexOf(int ch,int fromIndex)
String str="The colors are [blue], [yellow], and [green]";

ArrayList<String> arr = new ArrayList<String>();

for(int i = str.indexOf('[', 0); i != -1; i = str.indexOf('[', i + 1)) {
    arr.add(str.substring(i + 1, str.indexOf(']', i)));
}

for(String s : arr) {
    System.out.println(s);
}