根据this CodingBat problem我正在尝试执行以下操作:
给定一个字符串,如果第一个或最后一个字符为'x',则返回不带'x'字符的字符串,否则返回字符串不变。
我的代码:
public String withoutX(String str) {
if (str.startsWith("x")) {
str = str.replace(str.substring(0, 1), "");
}
if (str.endsWith("x")) {
str = str.replace(str.substring(str.length()-1), "");
}
return str;
}
此代码替换字符串中的所有x
个字符,而不是仅替换第一个和最后一个字符。为什么会发生这种情况,以及解决问题的好方法是什么?
答案 0 :(得分:4)
您可以使用string.replaceAll
功能。
string.replaceAll("^x|x$", "");
以上代码将替换开头或结尾处的x
。如果在开头或结尾没有x
,它将返回原始字符串不变。
答案 1 :(得分:1)
来自replace
方法的sdk:
返回替换所有出现次数所产生的新字符串 带有newChar的字符串中的oldChar。
您无需替换即可解决此问题:
public String withoutX(String str) {
if (str == null) {
return null;
}
if (str.startsWith("x")) {
str = str.substring(1);
}
if (str.endsWith("x")) {
str = str.substring(0, str.length()-1);
}
return str;
}
答案 2 :(得分:-1)
您可以将replaceFirst用作第一个字符,或者您可以将两个字符串子字符串
public static String withoutX(String str) {
if (str.startsWith("x")) {
str = str.replaceFirst("x", "");
}
if (str.endsWith("x")) {
str = str.substring(0,str.length() - 1);
}
return str;
}