Java 从字符串生成器中删除字符

Java 从字符串生成器中删除字符,java,string,stringbuilder,Java,String,Stringbuilder,我正在尝试运行一个循环以从字符串中删除一些字符。但是当我运行下面的代码时,我只从第一次运行中获得输出(I on)。我不明白绳子的其余部分。有人能帮我补充一下吗?仅显示第一次迭代的结果。谢谢 someStr = "I don't know this"; StringBuilder sb = new StringBuilder(someStr); int n = 3 for (int i = n - 1; i < sb.length(); i = n + 1) { sb = sb.de

我正在尝试运行一个循环以从字符串中删除一些字符。但是当我运行下面的代码时,我只从第一次运行中获得输出(I on)。我不明白绳子的其余部分。有人能帮我补充一下吗?仅显示第一次迭代的结果。谢谢

someStr = "I don't know this";
StringBuilder sb = new StringBuilder(someStr);
int n = 3
for (int i = n - 1; i < sb.length(); i = n + 1) {
    sb = sb.deleteCharAt(i);
}
System.out.println(sb.toString());
someStr=“我不知道这个”;
StringBuilder sb=新的StringBuilder(someStr);
int n=3
对于(int i=n-1;i
for语句的第三部分是增加或减少索引的指令

在那里,它总是4

更清楚地说:

1st iteration : i = 2 => you remove the 'd', your string is now "I on't know this"

2nd iteration : i = 4 => you remove the ''', your string is now "I ont know this"

3rd iteration : i = 4 => you remove the 't', your string is now "I on know this"

4th iteration : i = 4 => you remove the ' ', your string is now "I onknow this"

为什么不使用String.replaceAll()


如果您想从字符串中删除字符,我建议您使用正则表达式。这是一个用空字符串替换需要删除的字符的示例:

public static String cleanWhitPattern(String sample, String , String regex) {

    if (sample != null && regex != null) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(sample);

        if (matcher.find()) {
            return matcher.replaceAll("");
        }

        return sample;
    }

    return null;
}
现在,您只需使用所需的模式调用此方法:

System.out.print(cleanWithPattern("I don't know this", "o*"));
您的输出应该是:


我不知道这个

例如,如果要从字符串中删除字符“k”,则可以执行以下操作

爪哇:

科特林:

val someStr: String = "I don't know this"
val sb: StringBuilder = StringBuilder(someStr)

if(sb.toString().contains("k")){
  val index: Int = sb.indexOf("k")
  sb.deleteCharAt(index)
  print(sb.toString())

  }else{
   print("No such a char")
}

当然,您可以根据所需的输出进行多种组合或改进。

什么是
n
?…检查您的增量语句实际执行的操作n可以是任何整数,如2,3,4等。如果您编辑您的帖子以包含输入和预期输出,这将有助于我们解释您的逻辑错误“n可以是任意整数”对任何人都没有用处,它没有阐明您试图实现的目标。您能理解这个问题吗?它在StringBuilder类上,而不是在StringClass上。
String someStr = "I don't know this";
StringBuilder sb = new StringBuilder(someStr);

if(sb.toString().contains("k")){
  int index = sb.indexOf("k");
  sb.deleteCharAt(index);
  System.out.println(sb.toString());
}else{
  System.out.println("No such a char");
}
val someStr: String = "I don't know this"
val sb: StringBuilder = StringBuilder(someStr)

if(sb.toString().contains("k")){
  val index: Int = sb.indexOf("k")
  sb.deleteCharAt(index)
  print(sb.toString())

  }else{
   print("No such a char")
}