54

可能重复:
两个分隔符之间的子字符串

我有一个字符串

“ABC[这是提取]”

我想"This is to extract"在java中提取部分。我正在尝试使用拆分,但它没有按我想要的方式工作。有人有建议吗?

4

4 回答 4

100

如果[]字符串中只有一对括号 ( ),则可以使用indexOf()

String str = "ABC[ This is the text to be extracted ]";    
String result = str.substring(str.indexOf("[") + 1, str.indexOf("]"));
于 2012-12-10T07:11:41.717 回答
71

如果只有 1 次出现,ivanovic 的答案是我猜的最好方法。但如果出现次数多,则应使用正则表达式:

\[(.*?)\]这是你的模式。在每一个group(1)都会得到你的字符串。

Pattern p = Pattern.compile("\\[(.*?)\\]");
Matcher m = p.matcher(input);
while(m.find())
{
    m.group(1); //is your string. do what you want
}
于 2012-12-10T07:14:50.653 回答
9

试试看

String s = "ABC[ This is to extract ]";
        Pattern p = Pattern.compile(".*\\[ *(.*) *\\].*");
        Matcher m = p.matcher(s);
        m.find();
        String text = m.group(1);
        System.out.println(text);
于 2012-12-10T07:16:40.757 回答
8
  String s = "ABC[This is to extract]";

    System.out.println(s);
    int startIndex = s.indexOf('[');
    System.out.println("indexOf([) = " + startIndex);
    int endIndex = s.indexOf(']');
    System.out.println("indexOf(]) = " + endIndex);
    System.out.println(s.substring(startIndex + 1, endIndex));
于 2012-12-10T07:17:34.243 回答