0

我希望能够用下划线字符替换字符串中的所有字母。

例如,假设我的字符串由字母字符组成:“Apple”。我如何将其转换为五个下划线,因为苹果中有五个字符(字母)?

4

11 回答 11

2

您可以使用该String.replaceAll()方法。

替换所有字母:

String originalString = "abcde1234";
String underscoreString = originalString.replaceAll("[a-zA-Z]","_");

如果您的意思是所有字符:

String originalString = "abcde1234";
String underscoreString = originalString .replaceAll(".", "_");
于 2013-10-24T02:04:26.240 回答
2

为什么不忽略“替换”的想法并简单地创建一个具有相同数量下划线的新字符串......

String input = "Apple";

String output = new String(new char[input .length()]).replace("\0", "_");
//or
String output2 = StringUtils.repeat("_", input .length());

很大程度上来自这里

正如许多其他人所说,replaceAll如果您不想包含空格,可能是要走的路。为此,您不需要正则表达式的全部功能,但除非字符串绝对巨大,否则它肯定不会受到伤害。

//replaces all non-whitespace with "_"
String output3 = input.replaceAll("\S", "_");
于 2013-10-24T02:14:58.100 回答
1
        String content = "apple";
        String replaceContent = "";
        for (int i = 0; i < content.length(); i++)
        {
            replaceContent = replaceContent + content.replaceAll("^\\p{L}+(?: \\p{L}+)*$", "_");
        }

        System.out.println(replaceContent);

使用正则表达式

关于\p{L}:参考Unicode 正则表达式

于 2013-10-24T02:04:05.047 回答
0

当然,我会折腾一个替代方案:

String input = "Apple";
char[] newCharacters = new char[input.length()];
Arrays.fill(newCharacters, '_');
String underscores = new String(newCharacters);
于 2013-10-24T02:15:59.053 回答
0

你可以做

int length = "Apple".length();
String underscores = new String(new char[length]).replace("\0", "_");
于 2013-10-24T02:12:32.673 回答
0

那这个呢

  public static void main(String args[]) {
    String word="apple";

        for(int i=0;i<word.length();i++) {
            word = word.replace(word.charAt(i),'_');
        }
        System.out.println(word);
}
于 2013-10-24T02:01:04.700 回答
0

试试这个。

String str = "Apple";
str = str.replaceAll(".", "_");
System.out.println(str);
于 2013-10-24T02:02:10.207 回答
0

尝试这个,

        String sample = "Apple";
        StringBuilder stringBuilder = new StringBuilder();
        for(char value : sample.toCharArray())
        {
            stringBuilder.append("_");
        }
        System.out.println(stringBuilder.toString());
于 2013-10-24T02:02:28.367 回答
0
stringToModify.replaceAll("[a-zA-Z]","_");
于 2013-10-24T02:09:23.890 回答
0

str.replaceAll("[a-zA-Z]","_");


    String str="stackoverflow";
    StringBuilder builder=new StringBuilder();
    for(int i=0;i<str.length();i++){
        builder.append('_');
    }
    System.out.println(builder.toString());
于 2013-10-24T02:14:51.627 回答
0

或者这是一个不错的递归方法:

public static void main(String[] args) {
    System.out.println(underscores("Apple"));
}

public static String underscores(String input) {
    if (input.isEmpty()) return "";
    else return "_" + underscores(input.substring(1));
}
于 2013-10-24T02:20:36.353 回答