为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Java 中使用循环将字符串分成字母组?

如何在 Java 中使用循环将字符串分成字母组?

元芳怎么了 2023-04-13 10:34:15
我必须编写一个将字符串分成组的方法。用户应该给出每组字母的数量,函数应该返回一个字符串,该字符串由分成几组的输入字符串组成。例如,function(“HELLOYOU”, 2) 将返回“HE LL OY OU”。
查看完整描述

3 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您可以使用下面的代码,它接受一个String实例和一个int定义要分割的字符数的N。然后使用String实例split方法。

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

}

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

如果您想将它们合并为一个String空间,您可以使用该StringUtils#join方法。

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

}


查看完整回答
反对 回复 2023-04-13
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

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


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

}


查看完整回答
反对 回复 2023-04-13
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

您可以使用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;

}

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


查看完整回答
反对 回复 2023-04-13
  • 3 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信