【问题标题】:how to remove multiple characters by their indice from a string in java? [closed]java - 如何通过索引从java中的字符串中删除多个字符? [关闭]
【发布时间】:2018-02-05 08:30:23
【问题描述】:

如何通过索引从字符串中删除多个字符。我想使用 StringBuilder 的 deleteCharAt 函数。但是如果我一个一个地删除char,我就不会跟踪正确的索引。 例如:

String test = "0123456789"
int[] removingIndice  = int[] {2, 4, 0};
// remove character from string
// result = "1356789"

【问题讨论】:

  • 1. 你试过什么? 2. String 是不可变的,您无法从中删除任何内容。 3.How to Ask
  • 我知道字符串是不可变的。我很喜欢使用 StringBuilder。
  • 那就做吧……你被否决了,因为你只是想不用尝试就使用它。你已经知道StringBuilder,那么问题/问题是什么?
  • @zxue 我知道你在做什么。如果逐个字符地删除,则会丢失最初为删除分配的实际索引位置,并且初始输入很重要,尤其是在字符串中有多个相同字符的情况下。我正在尝试解决方案,如果我得到所需的输出,我会在此处留下 ideone 链接。

标签: java string stringbuilder


【解决方案1】:

创建一个新的字符串生成器, 迭代字符串,如果它的索引不在数组中,则将元素添加到构建器

StringBuilder sb = new StringBuilder("");
for(int i = 0; i< test.length; i++){
    if( !ArrayUtils.contains(removingIndice, i))
    {
        sb.append(test.charAt(i));
    }
}
test = sb.toString();

【讨论】:

  • 错了,如果你像 charAt(2) 一样删除,那么 4 处的 char 已经改变了
  • 我正在编辑答案@AxelH
  • 确实!没有注意到编辑。
  • @AxelH 更好;) 但请添加一些解释,完整的代码不是很好,即使它很容易理解
【解决方案2】:

String 在 Java 中是不可变的,因此您需要创建一个新的字符串,删除位置 0、2、4 的字符。作为一种选择,您可以为此使用StringBuilder,如下所示:How to remove single character from a String

【讨论】:

    【解决方案3】:
    1. 我认为,您需要重新设计任务: "新字符串必须包含除...之外的所有字符"
    2. 现在,看来初始数据结构和目标很弱。

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 2013-10-19
      • 2013-08-20
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多