我正在构建一个应用程序,该应用程序从用户的短信中读取电话号码,而不是在说发件人电话号码,而是消息中的号码。
检查下面的示例消息;
“您好!您已成功将1GB传输到2348062570000,新余额为3072.0MB”
我对号码2348062570000感兴趣,这类似于Whatsapp从用户聊天中识别呼叫号码的方式,任何可以解决该问题的库或字符串操作都将受到赞赏。
答案 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);
}