Java:抓取数字

时间:2012-02-17 13:38:40

标签: java web-crawler

我创建了一个java电话簿(桌面应用程序),在我的电脑上有一个输出调用者号码的程序。它是一个8位数字。

这是它的工作原理enter image description here

我想从弹出窗口中仅抓取8位数字,所以我们假设这是一个弹出窗口:

    My name is someone like you, i am 22 years old, i was born in 19/10/1989,
    my phone number is 34544512
    my brother is someone like me he is 18 years old, born in 9101993 
    his number is 07777666

在此示例中,我只想抓取 07777666 34544512

我想每2秒检查弹出窗口是否有新号码,如果来电者给我打了两次电话,他的电话号码已存入我的数据库,如果没有,我会存储

注意:如果无法完成,请忘记弹出窗口,让我们说它只是一个文本每2秒更新一次,如何抓取它< / p>

这不是作业lol:D

3 个答案:

答案 0 :(得分:2)

使用Java正则表达式。创建一个8位或更多位的正则表达式并使用它。您将能够从文本样本中提取这两个电话号码。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String args[]) throws Exception {
        String testString = "My name is someone like you, i am 22 years old, i was born in 19/10/1989,"
                          + " my phone number is  34544512 3454451266"
                          + " my brother is someone like me he is 18 years old, born in 9101993 "
                          + " his number is 07777666";

        String[] pieces = testString.split("\\s+");
        String expression = "\\d{8,}";
        Pattern pattern = Pattern.compile(expression);
        for (int i = 0; i < pieces.length; i++) {
            if (pattern.matches(expression, pieces[i]))
                System.out.println(pieces[i]);
        }
    }
}

答案 1 :(得分:1)

哈哈......这显然是一个你正在作弊的家庭作业!

您的教授可能希望您使用正则表达式。如果这是你的头脑,那么只需将字符串标记并用Long.parseLong()检查每个标记。

当然,这两种方法都假设数据完全,就像上面的示例一样,并且电话号码中没有破折号。如果你需要考虑破折号(或点,空格等),那么正则表达式或手动逻辑会非常复杂。

更新:如果 需要考虑破折号或其他字符的电话号码,我可能会:

  1. 将字符串标记为
  2. 遍历所有令牌,使用正则表达式删除所有非数字字符,最后
  3. 使用正则表达式(或Long.parseLong()String.length())来确定剩下的是8位数字。

答案 2 :(得分:1)

如果您想从文本字符串中提取8位数字,那么您可以按照以下方式执行此操作:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex
{
    public static void main(String[] args)
    {
        Matcher m = Pattern.compile("\\b(\\d{8})\\b").matcher(
                "Hello 12345678 world 23456789");
        while (m.find())
        {
            System.out.println(m.group(1));
        }
    }
}

请参阅http://docs.oracle.com/javase/tutorial/essential/regex/