0

テキストを解析して、次のようなテキストから値を取得しようとしています。

Page 1 of 6

私はjavaを使用して終了番号を抽出することを検討しています。したがって、この場合の出力は6になります。

使用できるJava文字列関数はありますか?(または)他の方法はありますか?

4

5 に答える 5

15

これには正規表現を使用できます(たとえば、使用するよりも安全ですString.split)。

public static void main(String[] args) {

    String text = "Page 1 of 6";

    Matcher m = Pattern.compile("Page (\\d+) of (\\d+)").matcher(text);

    if (m.matches()) {
        int page  = Integer.parseInt(m.group(1));
        int pages = Integer.parseInt(m.group(2));

        System.out.printf("parsed page = %d and pages = %d.", page, pages);
    }
}

出力:

parsed page = 1 and pages = 6.
于 2012-08-20T14:08:46.310 に答える
8

このようなもの:

String s = "Page 1 of 6";
String[] values = s.split(" ");
System.out.println(Integer.parseInt(values[values.length - 1]));
于 2012-08-20T14:07:06.487 に答える
2

基本的な文字列操作だと思います。あなたにできることはこれです。

    String pageNumberString = "Page 1 of 6"; 
    int ofIndex = pageNumberString.indexOf("of"); 
    int pageNumber = Integer.parseInt(pageNumberString.substring(ofIndex + 2));

これでうまくいくと思います。

于 2012-08-20T14:09:48.087 に答える
2
Pattern p = Pattern.compile("(\\d+)$");
Matcher m = p.match("Page 1 of 6");
System.out.println(Integer.parseInt(m.group(1)));
于 2012-08-20T14:10:29.183 に答える
0

数字の形式が同じである限り、正規表現を使用します。

たとえば、これは2つの数字(数字以外の文字で区切られた)を持つ任意の文字列と一致し、2つの数字をキャプチャします。

(\d+)[^\d]+(\d+)

注:これは「Page1of2」のような奇妙なものと一致します。また、負の数とは一致しません。負のページ番号を取得することを期待しているわけではありません。

于 2012-08-20T14:11:50.913 に答える