我写了一个Scanner,它在字符串中寻找[integers或Folats],但是,我想评估该字符串以查找其中的点赞次数。并只获取时间,而不获取任何数字。
例如字符串:
“直到这个日期02/10/2019,本月用户在帐户15478上喜欢80.00张图像”
try {
Scanner scanner = new Scanner( message ).useDelimiter( "[^\\d.]+" );
VlauesInMessage = scanner.nextInt();
Log.w("Enter IntSCanner", String.valueOf( VlauesInMessage ));
scanner.close();
} catch (InputMismatchException e) {
System.out.print(e.getMessage());
}
但是
我希望扫描仪在出现诸如“图像”之类的特定单词后停止运行,因为有时它带给我15478或10。 有没有更好的主意来提取喜欢的时间,请记住,有时喜欢的次数可以是80.10。
答案 0 :(得分:1)
类Scanner具有方法findWithinHorizon(String,int)
。在输入中找到单词“ images”的位置,并将其用作调用方法findWithinHorizon()
时的限制。这是一个简单的例子。
Scanner s = new Scanner(message);
String str = s.findWithinHorizon("\\d+(\\.\\d+)?", message.indexOf("images"));
使用示例输入的结果是:
80.00
还有方法skip(String)
。因此,为了扫描单词“ images”之后的数字,请使用以下命令:
s.skip("^.*images")
String str = s.findWithinHorizon("\\d+(\\.\\d+)?", 0);
对于您的样本输入,结果是:
15478