我有一个字符串,例如这个:
stackoverflow
我想在 Java (Android) 中获得以下输出:
s***********w
所以我们保留第一个和最后一个字母,但其他字母被这个符号“*”代替。我希望字符串的长度从输入到输出是相同的。
这是我现在拥有的功能的代码。
String transform_username(String username)
{
// Get the length of the username
int username_length = username.length();
String first_letter = username.substring(0, 1);
String last_letter = username.substring(username_length - 1);
String new_string = "";
return new_string;
}
我能得到第一个和最后一个字母,但我真的不知道如何把“*”放在单词的中间。我知道我可以遍历它,但这显然不是一个好的解决方案。
最佳答案
在一行正则表达式中,您可以:
String str = "stackoverflow";
String repl = str.replaceAll("\\B\\w\\B", "*");
//=> s***********w
\B
是零宽度断言,它匹配 \b
不匹配的位置。这意味着它匹配除第一个和最后一个字母之外的所有字母。
关于java - 替换字符串的所有字母减去 Java 中的第一个和最后一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30714525/