テキストを解析して、次のようなテキストから値を取得しようとしています。
Page 1 of 6
私はjavaを使用して終了番号を抽出することを検討しています。したがって、この場合の出力は6になります。
使用できるJava文字列関数はありますか?(または)他の方法はありますか?
これには正規表現を使用できます(たとえば、使用するよりも安全です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.
このようなもの:
String s = "Page 1 of 6";
String[] values = s.split(" ");
System.out.println(Integer.parseInt(values[values.length - 1]));
基本的な文字列操作だと思います。あなたにできることはこれです。
String pageNumberString = "Page 1 of 6";
int ofIndex = pageNumberString.indexOf("of");
int pageNumber = Integer.parseInt(pageNumberString.substring(ofIndex + 2));
これでうまくいくと思います。
Pattern p = Pattern.compile("(\\d+)$");
Matcher m = p.match("Page 1 of 6");
System.out.println(Integer.parseInt(m.group(1)));
数字の形式が同じである限り、正規表現を使用します。
たとえば、これは2つの数字(数字以外の文字で区切られた)を持つ任意の文字列と一致し、2つの数字をキャプチャします。
(\d+)[^\d]+(\d+)
注:これは「Page1of2」のような奇妙なものと一致します。また、負の数とは一致しません。負のページ番号を取得することを期待しているわけではありません。