JavaScript:如何返回从指定字符起始的字符串?代码问题求助
解决my_strchr函数不包含目标字符的问题
你的代码问题出在截取起始位置的计算上:你错误地给str.indexOf(c)加上了c.length。因为这里的c是单个字符,c.length的值是1,导致截取的起始位置跳过了目标字符的索引,自然就把c排除在了返回结果之外。
修正后的代码很简单,直接用目标字符的索引作为substring的起始位置即可:
function my_strchr(str, c) { const charIndex = str.indexOf(c); // 找不到目标字符时返回空字符串,符合strchr的行为逻辑 return charIndex === -1 ? '' : str.substring(charIndex); }
测试你给出的例子:输入"abcabc"和"b"时,str.indexOf("b")返回1,substring(1)会从索引1的位置(也就是字符b)开始截取,最终返回"bcabc",完全符合预期。
另外针对题目中“终止空字符被视为字符串的一部分”的要求,如果你需要兼容查找空字符的场景,可以补充特殊处理:
function my_strchr(str, c) { // 查找空字符时,返回对应终止空字符位置的子串(空字符串) if (c === '') { return str.substring(str.length); } const charIndex = str.indexOf(c); return charIndex === -1 ? '' : str.substring(charIndex); }
内容的提问来源于stack exchange,提问作者Anton Diakovski
相关产品推荐
相关产品推荐

