0

我有一个 pinNumber 值。如何掩盖它(即)说如果我的 pinNumber 是 1234 并用四个星号符号掩盖它而不是显示数字。此屏蔽值将使用 jsp 显示在网页中。

4

7 回答 7

3

在您的代码中的某个时刻,您会将数字转换为字符串以供显示。此时,您可以简单地调用 String 的 replaceAll 方法,将 0-9 的所有字符替换为 * 字符:

s.replaceAll("[0-9]", "*")

好吧 - 这就是您直接在 Java 中执行此操作的方式。在 JSP 中,如果您在输入中选择“密码”类型,它会为您处理好,正如其他海报所示。

于 2013-08-02T10:37:27.090 回答
2
<input type="PASSWORD" name="password">

如果要在标签上显示密码,只需显示 5 或 6 个星号字符,因为您不想通过使标签的长度与密码的长度相同来给他们提供线索。

于 2013-08-02T10:36:20.250 回答
0

此代码可能会对您有所帮助。

    class Password {
        final String password; // the string to mask

      Password(String password) { this.password = password; } // needs null protection

         // allow this to be equal to any string
        // reconsider this approach if adding it to a map or something?

      public boolean equals(Object o) {
            return password.equals(o);
        }
        // we don't need anything special that the string doesnt

      public int hashCode() { return password.hashCode(); }

        // send stars if anyone asks to see the string - consider sending just
        // "******" instead of the length, that way you don't reveal the password's length
        // which might be protected information

      public String toString() {
            StringBuilder sb = new StringBuilder();
            for(int i = 0; < password.length(); i++) 
                sb.append("*");
            return sb.toString();
        }
    }
于 2013-08-02T11:10:27.987 回答
0

你创建这样的表格

<form action="something" method="post">
pinNumber:<input type="password" name="pass"/>
<input type="submit" value="OK"/>
</form>

然后它会变成*

于 2013-08-02T11:02:32.047 回答
0

我在我的许多应用程序中使用以下代码,它运行良好。

public class Test {
    public static void main(String[] args) {
        String number = "1234";
        StringBuffer maskValue = new StringBuffer();
        if(number != null && number.length() >0){
            for (int i = 0; i < number.length(); i++) {
                maskValue.append("*");
            }
        }
        System.out.println("Masked Value of 1234 is "+maskValue);
    }
}
Ans - Masked Value of 1234 is ****
于 2016-01-21T19:58:08.357 回答
0

两种方法(这将掩盖所有字符,而不仅仅是数字):

private String mask(String value) {
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < value.length(); sb.append("*"), i++); 
    return sb.toString();
}

或者:

private String mask(String value) {
    return value.replaceAll(".", "*");
}

我用第二个

于 2017-12-20T11:41:53.733 回答
0

使用@Mask 注释。

@Mask(prefixNoMaskLen = 3, maskStr = "*", suffixNoMaskLen = 3) private String mobileNumber;

这会将手机号码从 987654321 屏蔽到 987****321

于 2021-08-03T06:02:09.673 回答