我正在尝试解析文本并从以下文本中获取值:
Page 1 of 6
我正在考虑使用java提取结束号。 所以我在这种情况下应该是6。
我可以使用任何java字符串函数吗? (或)任何其他方式?
答案 0 :(得分: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.
答案 1 :(得分:8)
这样的事情:
String s = "Page 1 of 6";
String[] values = s.split(" ");
System.out.println(Integer.parseInt(values[values.length - 1]));
答案 2 :(得分:2)
我认为这是基本的字符串操作。你能做的就是这个..
String pageNumberString = "Page 1 of 6";
int ofIndex = pageNumberString.indexOf("of");
int pageNumber = Integer.parseInt(pageNumberString.substring(ofIndex + 2));
我认为这应该有效。
答案 3 :(得分:2)
Pattern p = Pattern.compile("(\\d+)$");
Matcher m = p.match("Page 1 of 6");
System.out.println(Integer.parseInt(m.group(1)));
答案 4 :(得分:0)
我会使用正则表达式,只要您的数字格式保持相似。
例如,这个匹配任何带有2个数字的字符串(由任何非数字字符分隔),并捕获2个数字。
(\d+)[^\d]+(\d+)
注意:这将匹配一些奇怪的东西,如“Page1of2”。它也不会匹配负数。并不是说您希望获得负面的页码。