使用扫描仪在字符串中查找值

时间:2019-02-10 17:05:13

标签: android android-fragments java.util.scanner

我写了一个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。

1 个答案:

答案 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