【问题标题】:How do I break a string into groups of letters with a loop in Java?如何在Java中使用循环将字符串分成字母组?
【发布时间】:2019-07-23 10:09:50
【问题描述】:

我必须编写一个将字符串分成组的方法。用户应该给出每组的字母数量,并且函数应该返回一个字符串,该字符串由分成组的输入字符串组成。例如,function(“HELLOYOU”, 2) 将返回“HE LL OY OU”。

【问题讨论】:

  • 到目前为止您尝试过什么?你能告诉我们你的努力吗?如果有很多字母不能分割,比如function("Hello", 2),该怎么办?
  • substring 呢?

标签: java string whitespace breakpoints


【解决方案1】:

您可以使用String.split() 将字符串分解为单个字母的数组,然后组合成对的字母或更大的组等。

下面是一些示例代码:

String[] splitInParts(String input, int size) {
    String[] letters = input.split("");
    String[] output = new String[letters / size];

    for (int i = 0; i < output.length; i++) {
        output[i] = "";
        for (int j = 0; j < size; j++) {
            output[i] = output[i] + letters[size * i + j];
        }
    }

    return output;
}

缺少很多样板代码,例如,检查循环参数是否在范围内,检查字符串是否为空等。但是,这是您如何去做的一个粗略的想法。

【讨论】:

    【解决方案2】:

    您可以将输入字符串的字符移动到一个新的字符串,并在每个等于“大小”的步骤上放置空格:

    String function(String input, int parts) {
        StringBuilder result = new StringBuilder();
        int partCounter = 0;
        for (int i = 0; i < input.length(); i++) {
            partCounter++;
            result.append(input.charAt(i));
            if (partCounter == parts){
                result.append(" ");
                partCounter = 0;
            }
        }
    
        return result.toString();
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用下面的代码,该代码采用 String 实例和 N int 定义要拆分的字符数。然后使用String instances split method

      public static String[] split(String input, int len){
          // To prevent any NullPointerException being thrown
          if (StringUtils.isEmpty()) {
              return null;
          }
          // Split the input string based on a regex pattern
          return input.split(String.format("(?<=\\G.{%1$d})", len));
      }
      

      这里使用的正则表达式是(?&lt;=\\G.{%1$d}),它基于len2 将变为(?&lt;=\\G.{2})。所以这意味着它将每 2 个字符拆分一次。因此,HELLOWORLD 字符串的输出将是 HELLOWORLD

      如果您想将它们合并为一个String,并用空格分隔,您可以使用StringUtils#join method

      String joinedString = StringUtils.join(split, StringUtils.SPACE);
      

      这会产生"HE LL OW OR LD"

      所以一个多合一的方法是:

      public static String separateNthCharacter(String input, int len) {
          // To prevent any NullPointerException being thrown
          if (StringUtils.isEmpty()) {
              return StringUtils.EMPTY;
          }
      
          String[] split = input.split(String.format("(?<=\\G.{%1$d})", len));
          return StringUtils.join(split, StringUtils.SPACE);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-26
        • 1970-01-01
        • 2014-08-02
        • 2016-10-26
        • 1970-01-01
        • 2018-07-29
        • 2016-07-04
        • 1970-01-01
        相关资源
        最近更新 更多