7 回答
TA贡献1804条经验 获得超2个赞
你可以这样得到otp。
String allNum=message.replaceAll("[^0-9]",""); String otp=allNum.substring(0,6);
TA贡献1799条经验 获得超6个赞
您可以从任何消息中提取任意 6 位数字String。“|” 用于查找更多可能的组合。只有“\d{6}”还可以为您的问题提供正确的结果。
//find any 6 digit number
Pattern mPattern = Pattern.compile("(|^)\\d{6}");
if(message!=null) {
Matcher mMatcher = mPattern.matcher(message);
if(mMatcher.find()) {
String otp = mMatcher.group(0);
Log.i(TAG,"Final OTP: "+ otp);
}else {
//something went wrong
Log.e(TAG,"Failed to extract the OTP!! ");
}
}
TA贡献1776条经验 获得超12个赞
String message="OTP 为 145673,并且在接下来的 20 分钟内同样有效";
System.out.println(message.replaceFirst("\d{6}", "******"));
我希望这有帮助。
TA贡献1936条经验 获得超6个赞
如果您的消息始终以“您的 OTP 代码是:”开头,并且在代码后有换行符 (\n),则使用以下内容:
Pattern pattern = Pattern.compile("is : (.*?)\\n", Pattern.DOTALL);
Matcher matcher = pattern.matcher(message);
while (matcher.find()) {
Log.i("tag" , matcher.group(1));
}
TA贡献1824条经验 获得超5个赞
使用这样的正则表达式:
public static void main(final String[] args) {
String input = "Your OTP code is : 123456\r\n" + "\r\n" + "FA+9qCX9VSu";
Pattern regex = Pattern.compile(":\\s([0-9]{6})");
Matcher m = regex.matcher(input);
if (m.find()) {
System.out.println(m.group(1));
}
}
TA贡献1830条经验 获得超3个赞
尝试一下希望这会对您有所帮助。
String expression = "[0-9]{6}";
CharSequence inputStr = message;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
添加回答
举报