Java StringBuffer 在特定偏移处动态追加字符串

Java StringBuffer dynamically append Strings at certain offset

我有一个最大长度为 629 个字符的字符串值。我正在使用 StringBuffer 在特定偏移索引上插入值。

     StringBuffer sb = new StringBuffer("                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ");
 sb.insert(0, "IN1");

 sb.insert(23, "abcsdfsfdsffdsffd");
 sb.insert(70, "6001");
 sb.insert(75, "74");
 sb.insert(80, "arn:organization");
 sb.insert(128, "YYYYMMDDHHMMSS");
 sb.insert(142, "0");
 sb.insert(145, "arn:organization");
 sb.insert(169, "502");
 sb.insert(193, "1");
 sb.insert(223, "1");
 sb.insert(228, "6001");
 sb.insert(236, "14228");
 sb.insert(254, "1");
 sb.insert(259, "4.334");
 sb.insert(514, "Usage");
 sb.insert(594, "0");

如果您可以从示例代码中看到,我将不得不用字面上的 629 空白初始化 StringBuffer space...否则插入将不起作用。

我试过 StringBuffer sb = new StringBuffer(629);

但是当我尝试插入索引 23 时,它抛出索引越界的错误。

是否有更优雅的方法来初始化 StringBuffer 以在索引上插入字符串?

您正在错误地初始化 StringBufferStringBuffer(int) 构造函数不会创建具有给定长度的字符串,它只是分配容量来处理它。 StringBuffer 的开头长度仍为 0。这导致了您的错误。

您需要使用 StringBuffer(CharSequence) or StringBuffer(String) 构造函数对其进行初始化。

使用 this answer 中概述的任何方法创建一个长度为 629 的字符串,并使用它来初始化您的 StringBuffer