给定特定的起点和终点位置构建String的好方法是什么?

Mic*_*ell 2 java string stringbuffer

(java 1.5)

我需要在片段中构建一个String.我给了一组(子)字符串,每个字符串都有一个起点和终点,它们属于最后一个字符串.想知道是否有一些规范的做法.这不是家庭作业,我可以使用任何可授权的OSS,例如jakarta commons-lang StringUtils等.

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

正如我所说,这不是功课,我不需要一个完整的解决方案,只需要一些指向库或java类的指针,这可能会给我一些见解.String.Format看起来并不正确......

我必须尊重输入太长和太短等.子字符串将按它们出现的顺序重叠(如果重叠).

作为输入的一个例子,我可能有类似的东西:

字符串:开始:结束

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

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

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

我想结束

FO  BBLEH  
01234567890
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*ler 5

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

您还可以output在将任何字符串插入其中之前确定最终大小.您可以首先通过输入元素来查找最大的结尾.这将是最终的大小output.

char[] spaces = new char[size];
Arrays.fill(spaces, ' ');
output.append(spaces);
Run Code Online (Sandbox Code Playgroud)