JavaScript:编写一个函数来编辑范围内的字符串

JavaScript:编写一个函数来编辑范围内的字符串,javascript,Javascript,我想编写一个函数来编辑某个范围内的字符串,如果提供的话,还可以用另一段字符串替换该范围内的字符串。 范围是这样工作的-开始索引是包含的,结束索引是独占的(如slice),如果范围大于字符串的长度,则选择直到结束。如果开始索引超出字符串范围,则忽略整个操作。 比如说, const string='HELLO' 常数startIdx=1 常数endIdx=3 editText(string、startIdx、endIdx)//应返回“HLO” const string='HELLO' 常数star

我想编写一个函数来编辑某个范围内的字符串,如果提供的话,还可以用另一段字符串替换该范围内的字符串。 范围是这样工作的-开始索引是包含的,结束索引是独占的(如
slice
),如果范围大于字符串的长度,则选择直到结束。如果开始索引超出字符串范围,则忽略整个操作。 比如说,

const string='HELLO'
常数startIdx=1
常数endIdx=3
editText(string、startIdx、endIdx)//应返回“HLO”
const string='HELLO'
常数startIdx=1
常数endIdx=3
const textToAdd='y there'
editText(字符串、startIdx、endIdx)/“HLO”
const string='HELLO'
常数startIdx=2
常数endIdx=6
const textToAdd='y there'
editText(字符串、startIdx、endIdx、textToAdd)/“嘿,有”
以下是我的尝试:

函数editText(字符串、startIdx、endIdx、textToAdd){
if(startIdx<0 | | startIdx>=string.length)返回字符串
const strArr=string.split(“”)
如果(文本添加){
strArr.拼接(startIdx,endIdx-startIdx,textToAdd)
}否则{
横向拼接(startIdx,endIdx-startIdx)
}
返回strArr.join(“”)
}

它工作得很好,但我想知道是否有更有效或更优雅的方法来做到这一点?

您可以使用
string.replace

试着这样做:

function editText(string, startIdx, endIdx, textToAdd=null) {
    if(startIdx < 0 || startIdx >= string.length) return string
   return string.replace(string.substring(startIdx, endIdx), textToAdd || "")
}
函数editText(字符串、startIdx、endIdx、textToAdd=null){
if(startIdx<0 | | startIdx>=string.length)返回字符串
返回string.replace(string.substring(startIdx,endIdx),textToAdd | |“”)
}

我喜欢带
字符串的解决方案。请从上面替换

另一种方法是基于开始/结束提供的索引和可选文本使用
string.slice

函数editText(str,start,end,extractext=''){
返回str.slice(0,开始)+extextext+str.slice(结束,str.length);
}

谢谢你的回答,但这并不正确。尝试一下我在描述中给出的例子,你可以很容易地验证这一点。有趣的是,我已经测试了它们,它们对我来说很好,我创建了fiddle来提供一些证据:另外,你能再次检查你的第二个例子吗,你被声明为
textToAdd
,但你没有在函数中使用它作为参数,这是预期的吗?因为第一个和第二个例子在本例中是相同的。对不起,我想我没有把我的问题描述得足够清楚。它将在给定适当索引的原始字符串中插入``textToAdd`。比如,如果你有const
string='HELLO'
const startIdx=2
const endIdx=3
const textToAdd='y there'
editText(string,startIdx,endIdx,textToAdd)
应该给你
嘿thereLO
作为@Belhadjer Samir的答案输出,是的,现在它更有意义了,谢谢你的解释。我已经根据你的要求更新了fiddle,以防万一: