gpt4 book ai didi

android - 在 android 中匹配来自 SMS 的精确 7 位数字但它也采用其他数字

转载 作者:行者123 更新时间:2023-11-30 01:57:34 26 4
gpt4 key购买 nike

no> 在 android 中匹配来自 SMS 的精确 7 位数字但它无法正常工作。

actually I need exact 7 digits from SMS(like MMID have 7 digit).

public class IncomingSms extends BroadcastReceiver {

final SmsManager sms = SmsManager.getDefault();

public void onReceive(Context context, Intent intent) {

final Bundle bundle = intent.getExtras();

try {

if (bundle != null) {

final Object[] pdusObj = (Object[]) bundle.get("pdus");

for (int i = 0; i < pdusObj.length; i++) {

SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
currentMessage.getOriginatingAddress();

phoneNumber.equals("xxxxxxxxx");

String message = currentMessage.getDisplayMessageBody();
String s = null ;
String e = "\\d{7}";
Pattern p = Pattern.compile(e);
Matcher m = p.matcher(message);


while (m.matches())
{
s = m.group(0);

int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "senderNum: "+ phoneNumber + ", mmid: "+s, duration);
toast.show();

}
}
}

}
catch (Exception e)
{
Log.e("SmsReceiver", "Exception smsReceiver" +e);
}
}

In SMS message: your no alloted for the no xxxxxx01019015xx is 8435753.

its taking value from this word (xxxxxx01019015xx) like 0101901

But toast showing 0101901 and 8435753

最佳答案

使用 m.matches() 而不是 m.find() 作为 Matched#matches 方法确保匹配完整的输入正则表达式。另一方面,Matched#find 使用您的正则表达式(部分)匹配任何可能的内容。

最好像这样在正则表达式中使用 anchor :

Pattern p = Pattern.compile("^\\d{7}$");

关于android - 在 android 中匹配来自 SMS 的精确 7 位数字但它也采用其他数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31985668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com