-2

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

4

3 回答 3

0

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

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();
}
于 2019-07-23T10:49:18.990 回答
0

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

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

于 2019-07-23T10:14:42.983 回答
0

您可以使用下面的代码,它接受一个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})基于len存在2将成为(?<=\\G.{2}). 所以这意味着它将每 2 个字符拆分一次。因此,字符串的输出HELLOWORLD将是HE, LL, OW, OR, LD

如果您想将它们连接成一个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);
}
于 2019-07-23T10:52:20.097 回答