java - 如何让我的代码也检查长度为 0 的字符串?

标签 java string string-length

如果字母 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 的字符串。这已针对所有字符串实现,但空字符串除外,它表示索引超出范围。

最佳答案

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

它应该在方法体的顶部。或者,至少,它应该先于获取 str.charAt(0)

  1. String#isEmpty .
  2. 您比较 String 的方式是错误的。 Use equals instead of ==.
  3. 始终在通过索引访问字母之前验证长度。确保字符串中的索引存在。

关于java - 如何让我的代码也检查长度为 0 的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53899458/

相关文章:

java - 需要字符串匹配器正则表达式

sas - 防止 SAS 自动删除字符串中的尾随空白

java - 如何使用响应式(Reactive)驱动程序连接到 Neo4J 嵌入式实例?

java - 给定的测试数据比较器失败 - 为什么?

java - 利息数量

Ruby 字符串 - << 和 += 之间的区别

javascript - 如何将一串句子分成两半,分成两个字符串的数组,每个字符串的长度尽可能相似?

java - Kotlin 数据类型是基于原始或非原始 Java 数据类型构建的吗?

java - 在 Java 中确定数组的长度(初学者)

c - strlen 的替代方案不在 0 处中断