亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

慕森王 2023-07-19 10:38:23
這個想法是像信用卡一樣屏蔽字符串。用這一行代碼就可以完成。它有效。但是,我找不到本例中使用的正則表達式的任何直接解釋。public class Solution {    public static void main(String[] args) {        String t1 = "518798673672531762319871";        System.out.println(t1.replaceAll(".(?=.{4})", "*"));    }}輸出是:********************9871
查看完整描述

2 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

正則表達式的解釋

.(?=.{4})
  • .: 匹配任意字符

  • (?=:先行條件的開始

    • .{4}: 斷言存在 4 個字符

  • ): 前瞻條件結束

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

替換"*"意味著對于 inout 中的每個匹配字符,替換為單個*字符,從而在先行條件匹配失敗時替換信用卡號中除最后 4 個字符之外的所有字符(因為我們不會在當前位置前面有 4 個字符) )。


查看完整回答
反對 回復 2023-07-19
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

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

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

它重復此操作,直到第 9 個(從末尾算起的第 4 個字符),此時“此后還有 4 個字符嗎?”問題變為“否”并且替換停止


查看完整回答
反對 回復 2023-07-19
  • 2 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號