java - 替换字符串的所有字母减去 Java 中的第一个和最后一个

标签 java android regex string

我有一个字符串,例如这个:

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

RegEx Demo

\B 是零宽度断言,它匹配 \b 不匹配的位置。这意味着它匹配除第一个和最后一个字母之外的所有字母。

关于java - 替换字符串的所有字母减去 Java 中的第一个和最后一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30714525/

相关文章:

regex - 相当具体的 Perl 正则表达式

c# - 枚举和继承

Android webview 未加载包含资源的完整 html 页面

android - 如何在 native react 中从启动屏幕导航到登录屏幕?

java - LibGDX反向背景图

java - 如何将模式与完整的字符串匹配?

java - Java 中分隔符之间的多行文本匹配

java - 定制标题栏

java - 使用 maven 运行单个测试方法

Java - (NetBeans) 使 JTextArea 从 JFrame 后面滑出