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

标签 javascript

我想编写一个函数来编辑某个范围内的字符串,并可能交换该范围内的另一段字符串(如果提供)。 范围是这样工作的——开始索引是包含的,结束索引是排他的(比如 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/

相关文章:

javascript - 如何通过内容查询获取图标?

javascript - 如何制作将特定单词变成超链接的 chrome 扩展?

javascript - 如何从 select 元素中获取所选选项的文本?

javascript - 动态添加子元素后没有得到正确的 div 高度?

javascript - JSPDF - 如何将具有不同页面大小(高度和宽度)的多个图像导出到单个 pdf 文件

javascript - 重排音频节点能保证无缝播放吗?

javascript - 将代码从 ES5 转换为 ES6 并导出未按预期工作

javascript - 将库函数应用于多个输入

javascript - angular material2 在 Angular 2.0.0 应用程序中不起作用

javascript - jquery 选择器提取子元素并附加到另一个元素