[英]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.