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

yog*_*sma 46 java string split

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

我有一个字符串

"ABC [这是提取]"

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

Juv*_*nis 90

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

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

  • 函数`indexOf`和`substring`在内部迭代字符.所以请记住,当你调用`srt.substring(str.indexOf,str.indexOf)时,原来的`str`被迭代3次.这可能会导致大字符串中的性能问题. (3认同)

shi*_*t66 61

如果只有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
}
Run Code Online (Sandbox Code Playgroud)


Evg*_*eev 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);
Run Code Online (Sandbox Code Playgroud)


mil*_*hal 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));
Run Code Online (Sandbox Code Playgroud)