如何实现字符串指定索引区间内的子串替换功能
解决方案:按索引区间替换字符串子串
这事儿其实很直观,核心就是把原字符串拆成三个部分:起始索引之前的内容 + 替换字符串 + 结束索引之后的内容,然后拼接起来就行。我给你用两种常用语言写个实现例子,你一看就懂。
Python 实现
先写一个封装好的函数,还加了简单的索引合法性检查,避免出错:
def replace_substring_by_indices(original_str, start_idx, end_idx, replace_str): # 检查索引是否合法:不能小于0,结束索引不能超出字符串长度,且起始不能大于结束 if start_idx < 0 or end_idx >= len(original_str) or start_idx > end_idx: raise ValueError("起始或结束索引不合法,请检查输入") # 拼接新字符串 return original_str[:start_idx] + replace_str + original_str[end_idx+1:]
测试你的例子
第一个测试:
original = "elephant" result = replace_substring_by_indices(original, 2, 5, "tiger") print(result) # 输出:eltigernt
第二个测试:
original = "elephant elephant tiger" result = replace_substring_by_indices(original, 2, 5, "tiger") print(result) # 输出:eltigernt elephant tiger
JavaScript 实现
如果用JS的话,逻辑完全一样,只是字符串截取的方法稍有不同:
function replaceSubstringByIndices(originalStr, startIdx, endIdx, replaceStr) { if (startIdx < 0 || endIdx >= originalStr.length || startIdx > endIdx) { throw new Error("起始或结束索引不合法,请检查输入"); } return originalStr.slice(0, startIdx) + replaceStr + originalStr.slice(endIdx + 1); }
测试例子
let original = "elephant"; let result = replaceSubstringByIndices(original, 2, 5, "tiger"); console.log(result); // 输出:eltigernt
这个逻辑的关键是:不管替换字符串的长度和原子串的长度是否一致,都能正确替换——比如你例子里原子串是4个字符,替换成5个字符的"tiger",拼接后自然就把中间部分替换掉了,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Sritam Jagadev
相关产品推荐
相关产品推荐

