掩码字符串

嘿家伙我试图找到隐藏字符串的方法,但我发现的代码只适用于我的应用程序…有没有办法用“*”或“ – ”隐藏字符串中的字符,如果有的话是有人可以请解释

这是用于输入密码吗? 考虑以下:

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(); } } 

或者对于刽子手的方法

 class Hangman { final String word; final BitSet revealed; public Hangman(String word) { this.word = word; this.revealed = new BitSet(word.length()); reveal(' '); reveal('-'); } public void reveal(char c) { for(int i = 0; i < word.length; i++) { if(word.charAt(i) == c) revealed.set(i); } } public boolean solve(String guess) { return word.equals(guess); } public String toString() { StringBuilder sb = new StringBuilder(word.length()); for(int i = 0; i < word.length; i++) { char c = revealed.isSet(i) ? word.charAt(i) : "*"; } return sb.toString(); } } 

只需创建一个与原始字符数相同的字符串,而不是“混淆”字符。

 String x = "ABCD"; String output = ""; for (int i = 0; i < x.length(); i++) { output += "*"; } 

或者你可以使用x.replaceAll("\\S", "*") ,这也会保留空格。

您可以轻松实现以下内容:

 public class MaskedString { private String data; public MaskedString(String data){this.data = data;} public void append(char c){data += c;} public void setData(String data){this.data = data;} public String getMasked() { StringBuilder sb = new StringBuilder(); for(int i=0; i 

你明白了:)

有几种方法可以实现这一点,这取决于您的应用程序。

如果要一次性使用另一个字符掩盖所有字符,可以使用String#replaceAll(String regex, String replacement)方法: http : //docs.oracle.com/javase/7/docs/api/java/ lang / String.html#replaceAll(java.lang.String,%20java.lang.String) 。

这涉及使用正则表达式,对于regex您将使用[\s\S] ,它将匹配任何空格或非空白字符。 如需replacement请使用常规字符串,而不是RegEx。 在这种情况下,如果你想要一个星号,使用“*”,连字符“ – ”,非常简单。

除了@Roddy of the Frozen Pea@Roddy of the Frozen Pea@djc391之外,其他所有方法都运行良好,这就是我正确回答的原因。

祝好运