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 以在索引上插入字符串?
您正在错误地初始化 StringBuffer
。 StringBuffer(int)
构造函数不会创建具有给定长度的字符串,它只是分配容量来处理它。
StringBuffer 的开头长度仍为 0。这导致了您的错误。
您需要使用 StringBuffer(CharSequence)
or StringBuffer(String)
构造函数对其进行初始化。
使用 this answer 中概述的任何方法创建一个长度为 629 的字符串,并使用它来初始化您的 StringBuffer
。
我有一个最大长度为 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 以在索引上插入字符串?
您正在错误地初始化 StringBuffer
。 StringBuffer(int)
构造函数不会创建具有给定长度的字符串,它只是分配容量来处理它。
StringBuffer 的开头长度仍为 0。这导致了您的错误。
您需要使用 StringBuffer(CharSequence)
or StringBuffer(String)
构造函数对其进行初始化。
使用 this answer 中概述的任何方法创建一个长度为 629 的字符串,并使用它来初始化您的 StringBuffer
。