Ниже мой код, который я использовал, чтобы выделить значения поиска в моем списке. Я использовал функцию «getHighlightedText» и передал эту функцию в свой список.
getHighlightedText = text => {
const {value} = this.props; //search value stored in this.state.value
const space = new RegExp('\\b\\B\\W+\\B\\b]', 'g');
const findWords = value.split(space).map(fw => fw.toLowerCase()); //value is split
console.log('split the value:', findWords)
const textWords = text.split(space); //text is split
console.log('split the search:', textWords)
const output = textWords.map( word => { //each word in the array is mapped
const lower = word.toLowerCase();
if(findWords.includes(lower)){ //logic to check search value includes word
return <Text style={{ backgroundColor: 'coral'}}>{word} </Text>
} else {
return <Text>{word} </Text>
}
});
return <Text>{output}</Text>
}
return
<Text> {getHighlightedText(Desc)} </Text>; //using my getHighlightedText in my renderItem
Этот лог c отлично работает только для полных строк, а не для частичных строк. На изображении ниже «json» и «url» выделены правильно. Но так как я набрал «Noti», а не «Notification», эта строка не выделяется.
Как мне этого добиться ?? Любые идеи, пожалуйста,