繁体   English   中英

如何在一段文本中重复每个字母? 在Java中

[英]How to repeat each of the individual letters in a piece of text? in Java

就像在口吃的情况下,如果文本为“ dean”且乘数为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);
}

没有得到所需的结果。 我究竟做错了什么?

两个问题:

  1. 您不是在打印已经操作过的String,而是在打印最初使用的原始String,即"dean" 要从StringBuilder打印字符串,可以使用

    System.out.println(repeat);

  2. 您将整个单词"dean"到原始单词,而不是添加单个字母/字符。 您需要遍历原始单词中的每个字母,并将这些字母添加到空的StringBuilder 这是您应该开始使用的基本逻辑:

    • 获取原始单词(“教务长”)
    • 创建一个空的 StringBuilder
    • 通过使用for循环并获取字符串中的每个字符,或者使用String.split并解析Array,来解析原始单词(“院长”)的每个字母。
    • 对于原始单词中的每个字母,将该字母n次附加到您的StringBuilder
    • 解析完原始单词中的所有字母后,从StringBuilder打印字符串。

您只需在字符串的末尾附加单词“ dean”三遍。

尝试改为遍历dean单词中的每个字符并将该字符附加三次。

这样的东西(这是伪代码):

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);
}

您只需要为字符串中的每个字符添加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));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM