Ответ 1
Если в вашей строке есть только две скобки ([]
), вы можете использовать indexOf()
:
String str = "ABC[ This is the text to be extracted ]";
String result = str.substring(str.indexOf("[") + 1, str.indexOf("]"));
Возможный дубликат:
подстрока между двумя разделителями
У меня есть строка вроде
"ABC [Это нужно извлечь]"
Я хочу извлечь часть "This is to extract"
в java. Я пытаюсь использовать split, но он работает не так, как я хочу. Кто-нибудь имеет предложение?
Если в вашей строке есть только две скобки ([]
), вы можете использовать indexOf()
:
String str = "ABC[ This is the text to be extracted ]";
String result = str.substring(str.indexOf("[") + 1, str.indexOf("]"));
Если есть только 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
}
Попробуйте как
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);
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));