猿问

如何从随机字符串消息中提取 6 位数字?6 位数字不在消息的开头或结尾

我有一条带有 6 位 OTP 的字符串消息。但这不是在开始或结束时。所以索引没有帮助。替换是有效的,但我的消息可能随时改变,所以这个技巧也失败了。我的消息示例:

您的一次性密码是:123456

FA+9qCX9VSu

String subFirst= message.replace("<#> Your OTP code is : ", "");
String finalOTP = message.replace("FA+9qCX9VSu", "");

它仅产生此静态消息的预期结果。如何仅获取任何消息的 6 位数字。或者还有其他方法从消息中提取 OTP 吗?


12345678_0001
浏览 174回答 7
7回答

慕婉清6462132

你可以这样得到otp。String&nbsp;allNum=message.replaceAll("[^0-9]",""); String&nbsp;otp=allNum.substring(0,6);

哈士奇WWW

您可以从任何消息中提取任意 6 位数字String。“|” 用于查找更多可能的组合。只有“\d{6}”还可以为您的问题提供正确的结果。//find any 6 digit numberPattern mPattern = Pattern.compile("(|^)\\d{6}");if(message!=null) {&nbsp; &nbsp; Matcher mMatcher = mPattern.matcher(message);&nbsp; &nbsp; if(mMatcher.find()) {&nbsp; &nbsp; &nbsp; &nbsp; String otp = mMatcher.group(0);&nbsp; &nbsp; &nbsp; &nbsp; Log.i(TAG,"Final OTP: "+ otp);&nbsp; &nbsp; }else {&nbsp; &nbsp; &nbsp; &nbsp; //something went wrong&nbsp; &nbsp; &nbsp; &nbsp; Log.e(TAG,"Failed to extract the OTP!! ");&nbsp; &nbsp; }}

叮当猫咪

String message="OTP 为 145673,并且在接下来的 20 分钟内同样有效";&nbsp;System.out.println(message.replaceFirst("\d{6}", "******"));我希望这有帮助。

LEATH

如果您的消息始终以“您的 OTP 代码是:”开头,并且在代码后有换行符 (\n),则使用以下内容:Pattern pattern = Pattern.compile("is : (.*?)\\n", Pattern.DOTALL);&nbsp; &nbsp; Matcher matcher = pattern.matcher(message);&nbsp; &nbsp; while (matcher.find()) {&nbsp; &nbsp; &nbsp; Log.i("tag" , matcher.group(1));&nbsp; &nbsp; }

鸿蒙传说

您可以使用正则表达式查找数字子字符串,只需从子字符串中先取 6。

沧海一幻觉

使用这样的正则表达式:public static void main(final String[] args) {&nbsp; &nbsp; String input = "Your OTP code is : 123456\r\n" + "\r\n" + "FA+9qCX9VSu";&nbsp; &nbsp; Pattern regex = Pattern.compile(":\\s([0-9]{6})");&nbsp; &nbsp; Matcher m = regex.matcher(input);&nbsp; &nbsp; if (m.find()) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(m.group(1));&nbsp; &nbsp; }}

牛魔王的故事

尝试一下希望这会对您有所帮助。String expression = "[0-9]{6}";&nbsp; &nbsp; CharSequence inputStr = message;&nbsp; &nbsp; Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);&nbsp; &nbsp; Matcher matcher = pattern.matcher(inputStr);
随时随地看视频慕课网APP

相关分类

Java
我要回答