web-dev-qa-db-ja.com

特定の単語の後の文字列から部分文字列を取得する

私は以下の文字列を持っています。

ABC Results for draw no 2888

ここから2888を抽出したいと思います。つまり、上記の文字列でnoの後の文字を抽出する必要があります。

Word noの後の番号を常に抽出します。文字列には、他のno文字の組み合わせが含まれていません。文字列には他の数字が含まれている可能性があり、それらを抽出する必要はありません。常に数字の前にスペースがあり、抽出したい数字は常に文字列の最後にあります。

どうすればこれを達成できますか?

12
Bishan
yourString.substring(yourString.indexOf("no") + 3 , yourString.length());
19
Juned Ahsan

これを試してみてください

String example = "ABC Results for draw no 2888";
System.out.println(example.substring(example.lastIndexOf(" ") + 1));
8
Rahul Tripathi

あなたは常に、設定と修正が簡単なものを目指したいと思っています。そのため、他の検索よりも 正規表現パターン マッチングを選択することを常にお勧めします。

例、あなたの例のためにこれを考慮してください:

import Java.util.regex.Matcher;
import Java.util.regex.Pattern;


public class Play {
  public static void main(String args[]) { 
    Pattern p = Pattern.compile("^(.*) Results for draw no (\\d+)$");
    Matcher m = p.matcher("ABC Results for draw no 2888");
    m.find();
    String groupName = m.group(1);
    String drawNumber = m.group(2);
    System.out.println("Group: "+groupName);
    System.out.println("Draw #: "+drawNumber);
  }
}

提供されたパターンから、有用な部分を簡単に識別できます。問題を特定するのに役立ちます。また、パターン内の便利な追加部分を特定できます(グループ名を追加しました)。

もう1つの明らかな利点は、このパターンを外部から構成ファイルに簡単に保存できることです。

3
YoYo