我想编写一个函数来编辑某个范围内的字符串,并可能交换该范围内的另一段字符串(如果提供)。
范围是这样工作的——开始索引是包含的,结束索引是排他的(比如 slice
),如果范围大于字符串的长度,那么它会选择到最后。如果起始索引超出字符串范围,则整个操作将被忽略。
例如,
const string = 'HELLO'
const startIdx = 1
const endIdx = 3
editText(string, startIdx, endIdx) // should return 'HLO'
const string = 'HELLO'
const startIdx = 1
const endIdx = 3
const textToAdd = 'y there'
editText(string, startIdx, endIdx) // 'HLO'
const string = 'HELLO'
const startIdx = 2
const endIdx = 6
const textToAdd = 'y there'
editText(string, startIdx, endIdx,textToAdd) // 'HEy there'
这是我的尝试:
function editText(string, startIdx, endIdx, textToAdd) {
if(startIdx < 0 || startIdx >= string.length) return string
const strArr = string.split('')
if(textToAdd) {
strArr.splice(startIdx, endIdx - startIdx, textToAdd)
} else {
strArr.splice(startIdx, endIdx - startIdx)
}
return 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 || "")
}
关于JavaScript:编写一个函数来编辑一个范围内的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66860405/