首页 > 解决方案 > 如何让我的代码也检查长度为 0 的字符串?

问题描述

如果字母 x 作为任何给定字符串的第一个或最后一个字符存在,我正在尝试删除它。为什么我的代码不检查长度为 0 的字符串,即使我已经在我的代码中考虑了它?

我已经尝试使用 if 语句来检查长度是否为 0,如果是,则返回原始字符串。我也尝试过返回一个具有相同值的空字符串。

public String withoutX(String str) {
  if (((str.charAt(0)=='x') || str.charAt(str.length()-1) == 'x') && str.length()>=2){
    if (str.charAt(0)=='x'){
        str = str.substring(1,str.length());
    } if (str.charAt(str.length()-1) == 'x'){
        str = str.substring(0,str.length()-1);
    }
  } if (str.length()==1 && str == "x"){
      return "";
  } if (str.length()==0){
      return str;
    // the above if statement (length = 0) does not work
  } else{
      return str;
  }
}

预期的结果是它返回不带字母 x 的字符串。所有字符串都实现了这一点,除了一个空字符串,它表示索引超出范围。

标签: javastringstring-length

解决方案


if (str.length() == 0) {
    return str;
}

它应该在方法体的顶部。或者,至少,它应该在得到str.charAt(0).

  1. String#isEmpty
  2. 您比较Strings 的方式是错误的。使用equals而不是==.
  3. 在按索引访问字母之前始终验证长度。确保字符串中的索引存在。

推荐阅读