使用子字符串删除空格

Remove spaces using substring

我有这个:

private String remove_spaces(String s){
    s = s.trim();
    String updated = "";
    for (int i = 0;  i < s.length(); i++) {
        String tester = s.substring(i, i + 1);
        String space = " ";
        boolean isSpace = tester.equals(space);
        if (isSpace = false)
            updated += tester;
    }
    return updated;
}

它抛出 StringIndexOutOfBounds,我不明白为什么。为什么?

您需要 == 进行比较,而 = 是替换运算符。

if (isSpace == false)

此外,您可以使用 !(=not) 来缩短您的代码,如下所示:

private String remove_spaces(String s) {
    s = s.trim();
    String updated = "";
    for (int i = 0;  i < s.length(); i++) {
        String tester = s.substring(i, i + 1);
        if (!tester.equals(" ")) {
            updated += tester;
        }
    }
    return updated;
}

您遇到了 index out of bounds 错误,因为您试图找到一个大于数组实际长度的索引

String tester = s.substring(i,i + 1);

我建议使用这样的 if 子句

private String remove_spaces(String s) {
    s = s.trim();
    String updated = "";
    String tester = "";
    for (int i = 0;  i < s.length(); i++) {
        if (i != s.length-1) {
            tester = s.substring(i, i + 1);
        }else{
            tester = s.substring(i);
        }
        if (!tester.equals(" ")) {
            updated += tester;
        }
    }
    return updated;
}

在 Java 中删除字符串中空格的更好方法是

str = str.replace(" ","");

但是如果你想要类似于你的代码的东西,试试下面的,我想 substring 不需要我们可以使用 charAt为此。

private static String remove_spaces(String s) {
    s = s.trim();
    StringBuilder updated = new StringBuilder();
    for (int i = 0;  i < s.length(); i++) {
      Character tester = s.charAt(i);
      if (!tester.equals(' ')) {
        updated.append(tester);
      }
    }
    return updated.toString();
  }