我想用*
字符替換Java字符串中的所有字符。所以它不應該是什麼字符,它應該被替換爲*
。如何用星號替換Java字符串中的所有字符
我知道互聯網上有很多例子,但沒有一個可以替代每個角色,我已經嘗試過自己,但沒有成功。
我想用*
字符替換Java字符串中的所有字符。所以它不應該是什麼字符,它應該被替換爲*
。如何用星號替換Java字符串中的所有字符
我知道互聯網上有很多例子,但沒有一個可以替代每個角色,我已經嘗試過自己,但沒有成功。
str = str.replaceAll(".", "*");
注:這不會*
替換換行符(\n
)。要做到這一點,你需要使用
str = str.replaceAll("(?s).", "*");
的(?s)
不匹配任何東西,但激活DOTALL
模式,這使得.
也匹配\n
。
System.out.println("foobar".replaceAll(".", "*"));
根本不要使用正則表達式,計算字符串長度並返回相應的星號。
普通的Java版本:
int len = str.length();
StringBuilder sb = new StringBuilder(len);
for(int i = =; i < len; i++){
sb.append('*');
}
return sb.toString();
使用Guava:
return Strings.repeat("*", str.length());
// OR
return CharMatcher.ANY.replaceFrom(str, '*');
使用Commons/Lang:
return StringUtils.repeat("*", str.length());
public String allStar(String s) {
StringBuilder sb = new StringBuilder(s.length());
for (int i = 0; i < s.length(); i++) {
sb.append('*');
}
return sb.toString();
}
abt如何創建一個新的字符串的數量* =最後一個字符串字符數?
StringBuffer bf = new StringBuffer();
for (int i = 0; i < source.length(); i++) {
bf.append('*');
}
可能有其他更快/更好的方法來做到這一點,但你可以只使用一個字符串緩衝區和一個for循環:
public String stringToAsterisk(String input) {
if (input == null) return "";
StringBuffer sb = new StringBuffer();
for (int x = 0; x < input.length(); x++) {
sb.append("*");
}
return sb.toString();
}
如果您的應用程序是單線程的,則可以使用而不是StringBuilder,但它不是線程安全的。
我不知道這可能是任何更快:
public String stringToAsterisk(String input) {
if (input == null) return "";
int length = input.length();
char[] chars = new char[length];
while (length > 0) chars[--length] = "*";
return new String(chars);
}
無需任何外部庫,沒有自己的循環,你可以這樣做:
String input = "Hello";
char[] ca = new char[input.length()];
Arrays.fill(ca, '*');
String output = new String(ca);
BTW,既Arrays.fill()
和String(char [])
是非常快。
每個字符包括空格? – Neifen