java - 在给定特定开始和结束位置的情况下构建 String 的好方法是什么?

标签 java string stringbuffer

(Java 1.5)

我需要分段构建一个字符串。我得到了一组(子)字符串,每个字符串都有它们在最终字符串中所属位置的起点和终点。想知道是否有一些规范的方法可以做到这一点。这不是作业,我可以使用任何可授权的 OSS,例如 jakarta commons-lang StringUtils 等。

我的公司有一个使用 CharBuffer 的解决方案,我满足于保持原样(并添加一些单元测试,其中没有(?!))但是代码相当可怕,我想要一些东西更容易阅读。

正如我所说,这不是家庭作业,我不需要完整的解决方案,只需要一些指向库或 Java 类的指针,它们可能会给我一些见解。 String.Format 似乎不太正确...

我将不得不接受太长和太短等输入。子字符串将按照它们出现的顺序进行叠加(以防重叠)。

作为输入的例子,我可能有这样的东西:

字符串:开始:结束

FO:0:3(字符串比字段短)

BAR:4:5(字符串大于字段)

BLEH:5:9(字符串覆盖前一个字段)

我想结束

FO  BBLEH  
01234567890

(编辑:致所有人 - StringBuilder(具体来说,“预分配到已知长度,然后使用 .replace()”主题)似乎是我在想的。感谢所有提出建议的人! )

最佳答案

StringBuilder output = new StringBuilder();
// for each input element
{
    while (output.length() < start)
    {
        output.append(' ');
    }
    output.replace(start, end, string);
}

您还可以在向其中插入任何字符串之前确定output 的最终大小。您可以首先遍历输入元素以找到最大的一端。这将是 output 的最终大小。

char[] spaces = new char[size];
Arrays.fill(spaces, ' ');
output.append(spaces);

关于java - 在给定特定开始和结束位置的情况下构建 String 的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2652836/

相关文章:

java - Unity3D 插件 - 未找到 Google Play 服务资源

java - 使用子字符串搜索输入

r - 按数据表上的最后一个空格拆分字符串

Java EE 简单登录

java - Camel 拆分器返回 ExpressionNode

c++ - stringstream->rdbuf()->pubsetbuf 没有设置缓冲区

java - StringBuffer 与普通打印

java - 读取 XML 文件行并将它们作为 java 中的字符串读入。

android - 加速 Android 应用程序构建 - Java 编译器使用多个 CPU 内核

string - 在 Fortran 中,空字符串和未初始化的字符串有什么区别?