54

重複の可能性:
2 つの区切り文字の間の部分文字列

私は次のような文字列を持っています

「ABC[これは抽出する]」

"This is to extract"その部分をJavaで抽出したい。分割を使用しようとしていますが、思いどおりに機能していません。誰か提案がありますか?

4

4 に答える 4

100

[]文字列に角かっこ ( ) のペアしかない場合は、次を使用できますindexOf()

String str = "ABC[ This is the text to be extracted ]";    
String result = str.substring(str.indexOf("[") + 1, str.indexOf("]"));
于 2012-12-10T07:11:41.717 に答える
71

出現が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
}
于 2012-12-10T07:14:50.653 に答える
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);
于 2012-12-10T07:16:40.757 に答える
8
  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));
于 2012-12-10T07:17:34.243 に答える