我已经创建了自己的自动完成功能,但我遇到了一个我想修复的错误。这是一个不完整句子的例子我可能想要自动完成最后一个单词:
public void test() {
when(mockedRestTemplateObject.get).thenReturn(mockRestTemplate);
//mock restTemplate.exchange
when(mockRestTemplate.exchange(...)).thenReturn(mockedResponseEntity);
SomeService someService = new SomeService(mockedRestTemplateObject);
someService.getListofObjectsA();
}
在我的功能中,用户点击let text = 'Hello there, I am her'
+ ctrl
,并在页面上显示建议时自动填充该字词。在这种情况下,让我们说这个建议是'这里'。我的控制器也知道用户基于插入光标的位置(所以我有索引)。
如果我像这样使用替换:
enter
(其中单词是'她',建议是'这里')它将取代第一次出现。显然,这个单词可能在文本中的位置有无穷无尽的组合,如何在text.replace(word, suggestion);
字符串中的某个索引处替换一个?我知道我可以通过一些凌乱的text
条件来做到这一点,但是有一种优雅的方法吗?
(如果相关我正在使用角度keydown / keyup)
编辑>>>>> 这不是链接问题的重复,因为在这种情况下,它们总是替换最后一次出现。如果我这样做,那么我的程序将不支持用户返回句子并尝试自动填写新单词
答案 0 :(得分:0)
因此,你有一个字符串中的位置和要替换的多个字符(=不完整单词的长度)。在这种情况下,这会起作用吗?
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'))
答案 1 :(得分:0)
要指出你应该开始的方向。
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"