java - 如何让我的代码也检查长度为 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 的字符串。所有字符串都实现了这一点,除了一个空字符串,它表示索引超出范围。
解决方案
if (str.length() == 0) {
return str;
}
它应该在方法体的顶部。或者,至少,它应该在得到str.charAt(0)
.
- 有
String#isEmpty
。 - 您比较
String
s 的方式是错误的。使用equals
而不是==
. - 在按索引访问字母之前始终验证长度。确保字符串中的索引存在。
推荐阅读
- javascript - JavaScript中数组列表的Excel公式
- javascript - 使用 javascript 创建链接
- reactjs - 设置状态后 UI 未更新
- c - 在 esp32 中使用深度睡眠时是否清除了 void setup() 代码
- c# - 从原生 Java 回调到 Unity 的 C# 脚本有一些奇怪的(延迟?)问题
- powershell - 使用start-process命令获取运行程序的返回值
- python - 如何以这种所需的数组形状转换 Dataframes 列表?
- android - 如何设置此 apk 以上传到 Play 商店?
- flutter - Flutter 使用 if 语句更改小部件颜色
- css - 如何让 flexbox 占用最少的空间而不强制内容换行?