Java: сканировать номера - PullRequest
       1

Java: сканировать номера

0 голосов
/ 17 февраля 2012

Я создал телефонную книгу 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 секунды, как его сканировать

Это не домашняя работа LOL: D

Ответы [ 3 ]

2 голосов
/ 17 февраля 2012

Используйте регулярные выражения Java.Создайте регулярное выражение из 8 или более цифр и используйте его.Вы сможете извлечь эти 2 телефонных номера из вашего образца текста.

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 голос
/ 17 февраля 2012

Если вы имеете в виду, что хотите извлечь 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/

1 голос
/ 17 февраля 2012

Ха-ха ... это так очевидно домашнее задание, что вы изменяете!

Ваш профессор, вероятно, ожидает, что вы будете использовать регулярные выражения.Если это у вас над головой, то просто токенизируйте строки и проверяйте каждый токен с помощью Long.parseLong().

Конечно, оба эти подхода предполагают, что данные будут точно , как в вашем примере выше, и не будут иметь тире в телефонных номерах.Если вам нужно учесть тире (или точки, пробелы и т. Д.), То регулярное выражение или ручная логика становятся довольно сложными довольно быстро.

ОБНОВЛЕНИЕ: Если вы делаете необходимо учитывать телефонные номера с тире или другими символами в них, я бы, вероятно:

  1. токенизировал строку,
  2. перебирает все токены, используя регулярные выражения для удаления всех нечисловые символы и, наконец,
  3. , используйте регулярное выражение (или Long.parseLong() и String.length()), чтобы определить, является ли то, что осталось, 8-значным числом.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...