簡體   English   中英

用正則表達式屏蔽字符串的一部分

[英]Masking part of the string with a regex

想法是像使用信用卡一樣掩蓋字符串。 可以使用這一行代碼來完成。 而且有效。 但是我找不到這種情況下使用的正則表達式的任何直接解釋。

public class Solution {
    public static void main(String[] args) {

        String t1 = "518798673672531762319871";
        System.out.println(t1.replaceAll(".(?=.{4})", "*"));
    }
}

輸出為: ********************9871

正則表達式的說明

.(?=.{4})
  • . :匹配任何字符
  • (?= :超前條件的開始
    • .{4} :斷言存在4個字符
  • ) :超前條件結束

簡而言之,它匹配輸入中當前位置右側有4個字符的任何字符。

替換為"*" ,這意味着對於inout中的每個匹配字符,請替換為單個*字符,從而在提前查找條件不匹配時替換信用卡號中除最后4個字符外的所有字符(因為我們將沒有4個字符在當前位置之前)。

閱讀有關正則表達式的更多信息

?=.{4}是積極的前瞻。 它匹配方括號內的模式(當前字符之后的后4位數字),而沒有將其包含在與所有其他字符匹配的主要結果(方括號外的. )中,並將其替換為*

假設您的正則表達式逐個通過char輸入。 在第一個數字(5)上詢問:“是否有單個字符,后跟其他4個字符?是的,好的..用*替換[5]”。

重復此操作直到第9個字符(從末尾第4個字符開始),此時“此后還有4個字符嗎?”問題變為“ no”,並且替換停止

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM