如何从用户短信中检测和读取电话号码

时间:2018-08-01 20:47:13

标签: java android string android-studio sms

我正在构建一个应用程序,该应用程序从用户的短信中读取电话号码,而不是在说发件人电话号码,而是消息中的号码。

检查下面的示例消息;

“您好!您已成功将1GB传输到2348062570000,新余额为3072.0MB”

我对号码2348062570000感兴趣,这类似于Whatsapp从用户聊天中识别呼叫号码的方式,任何可以解决该问题的库或字符串操作都将受到赞赏。

2 个答案:

答案 0 :(得分:0)

如果您确定String的格式,并且数字不变,则可以执行以下操作。

    String str = "Y'ello!, your transfer of 1GB to 2348062570000 was 
    successful and your new balance is 3072.0MB" +;

    String[] split = str.split(" ");
    String stringPrecedingPhoneNumber = "to";
    int index = IntStream.range(0, split.length)
            .filter(i -> stringPrecedingPhoneNumber.equals(split[i]))
            .findFirst()
            .orElse(-1);
    System.out.print(split[index +1]);

答案 1 :(得分:0)

以下代码将从字符串中提取所有13位数字,并将其放入ArrayList中:

public static ArrayList<String> getPhones(String s) {
    String regex = "[0-9]{13}";

    ArrayList<String> array = new ArrayList<String>();

    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(s);

    while (matcher.find()) {
        array.add(s.substring(matcher.start(), matcher.end()));
    }

    return array;
}

您可以打印数字:

    String s = "Y'ello!, your transfer of 1GB to 2348062570000 was successful and your new balance is 3072.0MB";
    ArrayList<String> array = getPhones(s);
    for (String phone : array) {
        System.out.println(phone);
    }