在java中检查连续的13位数

Sat*_*ish 0 java

大家好我正在使用以下函数来检查java中的连续数字

这里面临的问题是它仅适用于第一个连续数字

例如,它适用于123456789123456XXXX, 但希望此工作连续任何地方 XXXX123456789123456XX123456789123456XX

更新

现在,如果我找到13个连续数字,那么我需要将所有连续数字传递给掩码函数

我的结果应该是这样的

输入123456789123456XXXX结果应为123456 %%%%% 3456XXXX

输入XXXX123456789123456结果应为XX123456 %%%%% 3456XX

请帮我解决这个问题

我的守则

public void checkPosCardNoAndMask(String cardNo) {
    String maskNumber = "";
    String starValue = "";
    boolean isConsecutive = false;
    int checkConsecutive = 0;
    for (int i = 0, len = cardNo.length(); i < len; i++) {
        if (Character.isDigit(cardNo.charAt(i))) {
            maskNumber = maskNumber + cardNo.charAt(i);
        } else {
            if (checkConsecutive >= 13)
                isConsecutive = true;
            else
                break;
            starValue = starValue + cardNo.charAt(i);
        }
        checkConsecutive++;
    }
    if (isConsecutive)
    {
     cardNo = maskCCNumber(maskNumber) + starValue;
     System.out.printIn("Consecutive found!!:"+cardNo);
    }
    else
    {
     System.out.printIn("Consecutive not found!!:"+cardNo);
    }

} 
Run Code Online (Sandbox Code Playgroud)

掩盖逻辑

public String maskCCNumber(String ccNo)
    {
        String maskCCNo = "";
        for (int i = 0; i < ccNo.length(); i++)
        {
            if (i > 5 && i < ccNo.length() - 4)
            {
                maskCCNo = maskCCNo + '%';
            }
            else
            {
                maskCCNo = maskCCNo + ccNo.charAt(i);
            }
        }
        return maskCCNo;
    }
Run Code Online (Sandbox Code Playgroud)

AJ.*_*AJ. 5

有了regex你可以这样说:

  String str = "XX123456789123456XX";
    if (str.matches(".*\\d{13}.*")) {
        System.out.println(true);
        Pattern compile = Pattern.compile("\\d+");
        Matcher matcher = compile.matcher(str);
        matcher.find();
        String masked = maskCCNumber(matcher.group());//send 123456789123456 and returns 123456%%%%%3456
        String finalString=str.replaceAll("\\d+", masked);// replace all digits with 123456%%%%%3456
        System.out.println(finalString);

    }
Run Code Online (Sandbox Code Playgroud)

输出:

true 
XX123456%%%%%3456XX
Run Code Online (Sandbox Code Playgroud)