Подтвердить что ты не робот

Как извлечь строку между двумя разделителями

Возможный дубликат:
подстрока между двумя разделителями

У меня есть строка вроде

"ABC [Это нужно извлечь]"

Я хочу извлечь часть "This is to extract" в java. Я пытаюсь использовать split, но он работает не так, как я хочу. Кто-нибудь имеет предложение?

4b9b3361

Ответ 1

Если в вашей строке есть только две скобки ([]), вы можете использовать indexOf():

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

Ответ 2

Если есть только 1 случай, ответ ivanovic - лучший способ, я думаю. Но если есть много вхождений, вы должны использовать 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
}

Ответ 3

Попробуйте как

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

Ответ 4

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