文字列を隠す方法を見つけようとしましたが、私が見つけたコードは自分のアプリケーションでしか使えませんでした... "*"文字列で文字を隠す方法はありますか?または " - "と誰かが説明できる場合はマスク文字列を持つ文字列
7
A
答えて
7
これはパスワードを作成するためのものですか?次のことを考えてみましょう:
または絞首刑執行人のアプローチのための
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();
}
}
3
だけではなく、あなたのキャラクターを「難読化」を使用してオリジナルと同じ文字数の文字列を作成します。
String x = "ABCD";
String output = "";
for (int i = 0; i < x.length(); i++) {
output += "*";
}
また、x.replaceAll("\\S", "*")
を使用すると、空白も保持されます。
1
あなたは簡単にこのような何かを実装することができます:
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<data.length(); i++)
sb.append('*');
return sb.toString();
}
public String getString()
{
return data;
}
}
あなたがアイデアを得る:)
1
これを達成するために、いくつかの方法がありますが、それはあなたのアプリケーションに依存します。
あなたが1つの別の文字ですべての文字をマスクしたい場合は、の方法を使用することができます: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
と@djc391
を除いて、他のすべての方法がうまく機能するため、正しく回答しています。
幸運
これまで行っていることはありますか? – kosa
「文字列を隠す」とはどういう意味ですか?オリジナルと同じ長さの "*"文字列を表示できませんか?あなたは*いくつかの*文字を隠すだけですか?パターンに対して?長さ? –
はい、Dave Newtonによると、文字列の一部や文字列全体を置き換える方法はありますが、希望する結果についてより具体的に説明する必要があります。元の文字列を表示し、その文字列をあなたの「置換」の後ろに置いておきたい特定の例を教えてください。 –