JavaScript:根据选择索引替换某些出现的字符串
JavaScript: Replace certain occurrence of string depending on selection index
我已经创建了自己的自动完成功能,并且遇到了一个我想修复的错误。这是一个不完整句子的示例,我可能想要自动完成最后一个单词:
let text = 'Hello there, I am her'
在我的功能中,用户单击 ctrl
+ enter
,它会根据页面上显示的建议自动完成单词。在这种情况下,假设建议是 'here'。我的控制器也知道用户基于插入光标的位置(所以我有索引)。
如果我像这样使用替换:
text.replace(word, suggestion);
(单词是 'her',建议是 'here')它将替换第一次出现的内容。显然这个词在文本中的位置有无穷无尽的组合,我如何在 text
字符串中的某个索引处替换一个?我知道我可以通过一些混乱的 if
条件来做到这一点,但是有没有一种优雅的方法来做到这一点?
(如果相关,我为此使用 angular keydown/keyup)
编辑>>>>>>
这不是链接问题的重复项,因为在这种情况下,它们总是替换最后一次出现的问题。如果我这样做,那么我的程序将不支持用户返回他们的句子并尝试在那里自动完成一个新词
因此,您在字符串中有一个位置和多个字符要替换(=不完整单词的长度)。在这种情况下,这行得通吗?
let text = 'appl and appl and appl'
function replaceAt(str, pos, len, replace) {
return str.slice(0, pos) + replace + str.slice(pos + len);
}
console.log(replaceAt(text, 0, 4, 'apple'))
console.log(replaceAt(text, 9, 4, 'apple'))
将为您指出应该让您入门的方向。
let sentence = 'Hello lets replace all words like hello with Hi';
let fragments = sentence.split(' ');
for (let i=0; i<fragments.length; i++){
if(fragments[i].toLowerCase() == 'hello')
fragments[i] = 'Hi'
}
let formattedsentence = fragments.join(' ');
console.log(formattedsentence); //"Hi lets replace all words like Hi with Hi"
我已经创建了自己的自动完成功能,并且遇到了一个我想修复的错误。这是一个不完整句子的示例,我可能想要自动完成最后一个单词:
let text = 'Hello there, I am her'
在我的功能中,用户单击 ctrl
+ enter
,它会根据页面上显示的建议自动完成单词。在这种情况下,假设建议是 'here'。我的控制器也知道用户基于插入光标的位置(所以我有索引)。
如果我像这样使用替换:
text.replace(word, suggestion);
(单词是 'her',建议是 'here')它将替换第一次出现的内容。显然这个词在文本中的位置有无穷无尽的组合,我如何在 text
字符串中的某个索引处替换一个?我知道我可以通过一些混乱的 if
条件来做到这一点,但是有没有一种优雅的方法来做到这一点?
(如果相关,我为此使用 angular keydown/keyup)
编辑>>>>>> 这不是链接问题的重复项,因为在这种情况下,它们总是替换最后一次出现的问题。如果我这样做,那么我的程序将不支持用户返回他们的句子并尝试在那里自动完成一个新词
因此,您在字符串中有一个位置和多个字符要替换(=不完整单词的长度)。在这种情况下,这行得通吗?
let text = 'appl and appl and appl'
function replaceAt(str, pos, len, replace) {
return str.slice(0, pos) + replace + str.slice(pos + len);
}
console.log(replaceAt(text, 0, 4, 'apple'))
console.log(replaceAt(text, 9, 4, 'apple'))
将为您指出应该让您入门的方向。
let sentence = 'Hello lets replace all words like hello with Hi';
let fragments = sentence.split(' ');
for (let i=0; i<fragments.length; i++){
if(fragments[i].toLowerCase() == 'hello')
fragments[i] = 'Hi'
}
let formattedsentence = fragments.join(' ');
console.log(formattedsentence); //"Hi lets replace all words like Hi with Hi"