如何重复一段文字中的每个字母? 在Java中
如果在文本是“院长”和乘数3的情况下,由于所提供的乘数指定的次数,结果将是“dddeeeaaannn”。
public static void repeatLetters() { String text = "dean"; int n = 3; StringBuilder repeat = new StringBuilder(text); for (int i = 0; i < n; i++) { repeat.append("dean"); } System.out.println(text); }
没有得到所需的结果。 我究竟做错了什么?
您只是为其中的每个字符附加字符串本身n次。 您需要遍历字符串并将每个字符追加n次。
public static void repeatLetters() { String text = "dean"; int n = 3; StringBuilder repeat = new StringBuilder(); for (int i = 0; i < text.length(); i++) { for (int j = 0; j < n; j++) { repeat.append(text.charAt(i)); } } System.out.println(repeat); }
另外,另一种解决方案是使用正则表达式。
public static void repeatLetters() { String text = "dean", replace = ""; int n = 3; for (int i = 0; i < n; i++) replace += "$1"; System.out.println(text.replaceAll("(.)", replace)); }
两个问题:
-
您没有打印已操作的字符串,而是打印您开始使用的原始字符串,即
"dean"
。 要从StringBuilder打印字符串,您可以使用的System.out.println(重复);
-
您将整个单词
"dean"
到原始单词中,而不是添加单个字母/字符。 您需要遍历原始单词中的每个字母,并将这些字母添加到空StringBuilder
。 以下是您应该使用的基本逻辑:- 得到原始单词(“院长”)
- 创建一个空的
StringBuilder
- 通过使用for循环并获取字符串中的每个字符或使用String.split并解析数组来解析原始单词(“dean”)的每个字母。
- 对于原始单词中的每个字母,将带有该字母的该字母附加到您的
StringBuilder
n次。 - 解析完原始单词中的所有字母后,从
StringBuilder
打印字符串。
您只需将“dean”一词附加到字符串的末尾三次。
尝试循环遍历单词dean中的每个char并将该char附加三次。
像这样的东西(这是伪代码):
StringBuilder repeat = new StringBuilder(); ForEach( letter in "dean" ) For( int i = 0 ; i < 3 ; i++ ) repeat.add(letter); Return repeat
你在这里重复整个词……一个可能的解决办法是
public static void repeatLetters() { String text = "dean"; int n = 3; StringBuilder repeat = new StringBuilder(); for (int i = 0; i < text.length() ; i++) { for (int j= 0; j< n; j++) repeat.append(text.charAt(i)); } System.out.println(repeat); }