我创建了一个java电话簿(桌面应用程序),在我的电脑上有一个输出调用者号码的程序。它是一个8位数字。
这是它的工作原理
我想从弹出窗口中仅抓取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
答案 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()
检查每个标记。
当然,这两种方法都假设数据完全,就像上面的示例一样,并且电话号码中没有破折号。如果你需要考虑破折号(或点,空格等),那么正则表达式或手动逻辑会非常复杂。
更新:如果 需要考虑破折号或其他字符的电话号码,我可能会:
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));
}
}
}