如何在两个分隔符之间提取字符串

时间:2012-12-10 07:06:37

标签: java string split

  

可能重复:
  substring between two delimiters

我有一个像

这样的字符串
  

“ABC [这是提取]”

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

4 个答案:

答案 0 :(得分:85)

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

String str = "ABC[ This is the text to be extracted ]";    
String result = str.substring(str.indexOf("[") + 1, str.indexOf("]"));

答案 1 :(得分:59)

如果只有1次出现,伊万诺维奇的回答是我猜的最佳方式。但是如果有很多事情发生,你应该使用regexp:

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

Pattern p = Pattern.compile("\\[(.*?)\\]");
Matcher m = p.matcher(input);
while(m.find())
{
    m.group(1); //is your string. do what you want
}

答案 2 :(得分: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);

答案 3 :(得分:7)

  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));