簡體   English   中英

用於屏蔽字符串中某些模式的正則表達式

[英]Regex for masking certain pattern in a String

有人可以幫我形成一個正則表達式來替換 Java 中的以下模式嗎?

"user=abc&password=abc123&token=xyz"

嘗試使用inputString.replaceAll(key + "=" + "([^\\\\s]+)", key + "=####&") ,但結果是"user=####&"

但是,我正在尋找替換它匹配模式"key=value&"所有事件。 所以最終結果應該是user=#####&password=#####&token=xyz

星號沒有打印出來,所以用# 替換這篇文章。

提前致謝!

使用基於流的方法,我們可以拆分&上的輸入,然后檢查每個查詢字符串組件的userpassword鍵。 在這種情況下,我們然后用#####掩碼替換這些值。 最后,連接回流末尾的單個查詢字符串。

String input = "user=abc&password=abc123&token=xyz";
String output = Arrays.stream(input.split("&"))
    .map(x -> {
        String[] parts = x.split("=");
        if ("user".equals(parts[0]) || "password".equals(parts[0])) {
            parts[1] = "#####";
        }
        return String.join("=", parts);
    })
    .collect(Collectors.joining("&"));

System.out.println(input);   // user=abc&password=abc123&token=xyz
System.out.println(output);  // user=#####&password=#####&token=xyz

暫無
暫無

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

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