JavaScript字符串处理:修正移除首尾'P'字符的函数逻辑错误
代码问题排查与修复
你的代码始终返回原字符串,核心问题出在if条件的写法上,具体错误点如下:
indexOf方法完全用错了indexOf()的功能是查找某个字符/字符串在原字符串里的位置,参数是要找的内容,不是索引值。你写的str.indexOf(0)其实是在找字符'0',而不是取字符串第0位的字符;str.indexOf(-1)是在找字符'-1',这俩操作返回的都是-1(因为你的输入字符串里没有这两个字符),所以条件永远不成立,自然只会走else分支返回原字符串。逻辑运算符不符合需求
需求是「首字符或尾字符为'P'就移除首尾」,但你用了&&(逻辑与),这意味着只有当首尾同时是'p'时才会执行移除操作,和需求逻辑不符。大小写匹配问题(可选)
需求里明确是判断'P'(大写),但你的代码里判断的是小写"p",如果输入字符串的首尾是大写P,也会导致条件不成立。
修复后的代码示例:
function remove(str) { // 处理空字符串或长度不足2的边界情况 if (str.length <= 2) return str; const firstChar = str[0]; const lastChar = str[str.length - 1]; // 按照需求判断:首字符或尾字符为'P' if (firstChar === 'P' || lastChar === 'P') { return str.substring(1, str.length - 1); } return str; } console.log(remove("PparallelepipedP")); // 输出 "parallelepiped" console.log(remove("pparallelepipedp")); // 若需求是小写p,将判断条件改成'p'即可
如果需要不区分大小写判断,可以调整为:
function remove(str) { if (str.length <= 2) return str; const firstIsP = str[0].toLowerCase() === 'p'; const lastIsP = str[str.length - 1].toLowerCase() === 'p'; if (firstIsP || lastIsP) { return str.substring(1, str.length - 1); } return str; }
内容的提问来源于stack exchange,提问作者Florence116
相关产品推荐
相关产品推荐

