可能性のある複製:
2つの区切り文字間の部分文字列
私は次のような文字列を持っています
「ABC [これは抽出する]」
Javaで"This is to extract"
部分を抽出したい。分割を使用しようとしていますが、希望どおりに機能していません。誰か提案がありますか?
文字列に括弧のペア([]
)しかない場合、indexOf()
を使用できます。
String str = "ABC[ This is the text to be extracted ]";
String result = str.substring(str.indexOf("[") + 1, str.indexOf("]"));
発生が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
}
として試してください
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));