【问题标题】:Java StringBuffer dynamically append Strings at certain offsetJava StringBuffer 在特定偏移处动态附加字符串
【发布时间】:2020-10-14 17:29:46
【问题描述】:

我有一个最大长度为 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...否则插入将不起作用。

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

但是当我尝试插入索引 23 时,它会抛出索引超出范围的错误。

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

【问题讨论】:

  • 我猜你应该选择一些像MAP这样的数据结构,然后将值附加到字符串中
  • 在哪一行抛出错误?
  • 你到底想做什么?您的描述说“有一个最大长度”,但您似乎正试图达到这个长度。
  • sb.insert(23, "abcsdfsfdsffdsffd");这会引发错误。
  • 这里最好使用append 方法。只需在 append 方法本身中提及您想要空间的地方即可。

标签: java stringbuffer


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-11
    • 2022-01-26
    • 1970-01-01
    • 2013-02-08
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    相关资源
    最近更新 更多