比如说我下面有这个词
THIS TEXT IS A SAMPLE TEXT
我得到了字符索引7。
然后,当我将句子拆分成单词时,我必须返回索引1,该单词是包含字符索引的单词的索引,而不是5,该单词与组成字符索引的单词完全匹配,但与正确地构成字符索引的单词不匹配说谎。
基本上,我试图返回字符所在位置(拆分为单词时)和字符索引(拆分为字符时)的正确单词索引
我以为我会用下面的东西来重建单词,以便在字符处找到单词
let curString = 'find a word from here';
let initialPositin = 5
let position = initialPositin
let stringBuilder = '';
while(position > -1 && curString.charAt(position) !== ' '){
console.log('run 1')
console.log(position);
stringBuilder = curString.charAt(position) + stringBuilder;
position --;
}
console.log(stringBuilder)
position = initialPositin + 1;
while(position < curString.length && curString.charAt(position) !== ' '){
console.log('run 2')
stringBuilder += curString.charAt(position);
position ++;
}
console.log(stringBuilder);
然后将句子拆分为单词,然后找到包含我构建的单词的单词的所有索引。然后遍历所有找到的单词并重构先前的单词,以查看重构中目标字符的索引是否与给定的字符位置匹配。
它真的没有效率。有谁有更好的建议?
我更喜欢javascript,但我可以尝试自己翻译其他任何语言
答案 0 :(得分:3)
我认为您可以只计算给定索引之前出现的空间,例如
let curString = 'find a word from here';
let givenIndex = 9;
let spaceIndex = 0;
for (var i = 0; i < curString.length; i++) {
if(curString.charAt(i) == ' ') {
if (i < givenIndex) {
spaceIndex++;
} else {
// found what we need
console.log(spaceIndex);
}
}
}
答案 1 :(得分:0)
也许您可以构建一个返回所有空格位置的函数。 然后,您可以查看字符索引在该空格位置列表中的适合位置。
答案 2 :(得分:0)
text = "THIS TEXT IS A SAMPLE TEXT"
indexes = []
current_word = 0
for i in range(0, len(text)):
if text[i] == ' ':
current_word += 1 # After a ' ' character, we passed a word
else:
indexes.append(current_word) # current character belongs to current word
您可以使用这段代码(用Python3编写)一次构建索引数组,然后将其用于每个索引。如果您还想在索引数组中计算''字符,则可以简单地将它们添加到for循环中(在if语句中)。
答案 3 :(得分:0)
我最终使用了以下代码
let dataid = infosStructured.filter((elm) => elm.identifiant == this.dataService.getcurrentId());
console.log(dataid);
工作非常好
答案 4 :(得分:0)
就像@miradham的答案一样,此函数对给定索引之前的空格进行计数,但是具有内置函数来对字符出现进行计数。
function wordIndexOfCharacterIndexInString(index, string) {
const stringUpToCharacter = string.slice(0, index)
return (stringUpToCharacter.match(/ /g) || []).length
}
console.log(wordIndexOfCharacterIndexInString(7, "THIS TEXT IS A SAMPLE TEXT"))