我正在尝试解析文本并从文本中获取值,例如:
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”。它也不会匹配负数。并不是说您希望得到一个负页码。