当前位置: 首页 > 知识库问答 >
问题:

按固定长度分割字符串并用空白填充空白

羊舌航
2023-03-14

我想将字符串拆分为固定长度,例如,拆分20个字符,如果拆分后长度小于20个字符,则用最多20个字符的空格填充字符串。

public static List<String> splitEqually(String text, int size) {

    List<String> ret = new ArrayList<String>((text.length() + size - 1) / size);

    for (int start = 0; start < text.length(); start += size) {
        ret.add(text.substring(start, Math.min(text.length(), start + size)));
    }
    return ret;
}

我使用上面的代码按相等大小进行拆分。

共有3个答案

章承
2023-03-14

与λ

String blanks20 = "                    ";
ArrayList<String> fixed20 = list.stream().collect( Collector.of( ArrayList::new,
    (l, s) -> {
        for(int i = 0; ; s = s.substring( 20 )) {
          l.add( (s + blanks20).substring( i, i + 20 ) );
          if( s.length() < 20 )
            break;
        } },
      (l, r) -> { l.addAll( r ); return( l ); } ) );
邹博明
2023-03-14

只有最后一个值可能不是给定的大小,因此如果需要,请在循环后用空格填充它。

public static List<String> splitFixedWidth(String text, int width) {
    List<String> ret = new ArrayList<>((text.length() + width - 1) / width);
    for (int start = 0; start < text.length(); start += width) {
        ret.add(text.substring(start, Math.min(text.length(), start + width)));
    }
    if (! ret.isEmpty()) {
        String lastValue = ret.get(ret.size() - 1);
        if (lastValue.length() < width) {
            lastValue += " ".repeat(width - lastValue.length());
            ret.set(ret.size() - 1, lastValue);
        }
    }
    return ret;
}

在低于11的Java版本中,使用:

        if (lastValue.length() < width) {
            char[] buf = new char[width];
            lastValue.getChars(0, lastValue.length(), buf, 0);
            Arrays.fill(buf, lastValue.length(), width, ' ');
            ret.set(ret.size() - 1, new String(buf));
        }

或者更短但效率更低:

        if (lastValue.length() < width) {
            ret.set(ret.size() - 1, String.format("%-" + width + "s", lastValue));
        }
昌博易
2023-03-14

此代码将解决您的问题。

public static List<String> splitEqually(String text, int size) {

    List<String> ret = new ArrayList<String>((text.length() + size - 1) / size);
    StringBuilder str1 = new StringBuilder();
    for (int start = 0; start < text.length(); start += size) {
        String temp = text.substring(start, Math.min(text.length(), start + size));
        if (temp.length() == size) {
            ret.add(temp);
            System.out.println(temp.length());
        } else {
            int n = size - temp.length();
            str1.append(temp);
            for (int j =0 ; j< n ; j++){
                str1.append(" ");
            }
            System.out.println(str1.length());
            ret.add(str1.toString());
        }

    }
    return ret;
}
 类似资料:
  • 问题内容: 我需要产生固定长度的字符串以生成基于字符位置的文件。缺少的字符必须用空格字符填充。 例如,字段CITY具有15个字符的固定长度。对于输入“芝加哥”和“里约热内卢”,输出为 。 问题答案: 从Java 1.5开始,我们可以使用方法java.lang.String.format(String,Object …) 并使用类似于printf的格式。 格式字符串可以完成这项工作。其中表示参数索引

  • 我需要产生固定长度的字符串来生成一个基于字符位置的文件。缺少的字符必须用空格字符填充。 例如,字段CITY具有15个字符的固定长度。对于输入“芝加哥”和“里约热内卢”,输出为

  • 问题内容: 我确信很多地方都可以找到它,但是我不知道我要执行的操作的确切名称,因此我无法真正查找它。我已经读了30分钟的Python官方书,试图找出方法。 问题:我需要将字符串放在一定长度的“字段”中。 例如,如果名称字段的长度为15个字符,而我的名字是John,则将得到“ John”,后跟11个空格以创建15个字符的字段。 我需要使用它来为变量“ name”输入任何字符串。 我知道这可能是某种格

  • 问题内容: 给定输入字符串,例如,在Go中将其拆分为字符串数组的最佳方法是什么?请注意,每个单词之间可以有_任意_数量的空格或Unicode空格字符。 在Java中,我只会使用。 (注意:在Go中使用正则表达式可能重复的Split字符串不会给出任何高质量的答案。请提供实际示例,而不仅仅是提供指向或包引用的链接。) 问题答案: 所述封装具有一个方法。 演示: http : //play.golang

  • 我正在做一个赋值,它需要一个以字符串和int为参数的方法。该方法应该用空格填充参数字符串,直到它的长度是给定的长度。例如,padString(“你好”,8应该返回“hello___”(_代表三个空格))如果int高于字符串的长度,那么它将简单地返回字符串。我很难关闭程序的“填充”部分。 由于这个任务是本书的早期内容,我假设它可以用初学者的东西来完成,例如forloops、参数和常见的字符串方法,因

  • 问题内容: 我需要用空格分割我的字符串。为此,我尝试: 但这似乎不起作用。 问题答案: 你所拥有的应该工作。但是,如果提供的空格默认为…其他内容?你可以使用空格正则表达式: 这将导致任意数量的连续空格将你的字符串拆分为标记。 附带说明一下,我不确定“ splited”是不是一个词:)我相信成为split的受害者的状态也是“ split”。这是那些棘手的语法问题之一:-)不要试图变得挑剔,只是想我会