Я хочу заменить последнее слово x на y, если y включает последнее слово x. Как я могу с этим справиться?
let x ='jaguar lion tiger panda'
let y = 'pandas'
ожидаемый результат:
'jaguar lion tiger pandas'
если
y = 'cat'
Ожидаемый результат:
'jaguar lion tiger panda cat'
Код, который я пробовал:
console.info(response)
let before = this.text.split(' ')
console.info(before)
console.info(before.length)
let a = before.slice(before.length-1)
console.info(a)
if (response.data.text[0].includes(a)) {
let x = (before.slice(0, before.length-1))
let y = x.replace(',', ' ')
this.preResult = y.push(response.data.text[0])
} else {
this.preResult.push(this.text + ' ' + response.data.text[0])



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать регулярное выражение для сопоставления последнего слова, а затем провести тест, проверив, соответствует ли yincludes слову или нет. Если это так, замените слово на y, иначе замените исходным словом, соединенным с y:
const x ='jaguar lion tiger panda'
const doReplace = y => x.replace(
/\S+$/, // match non-space characters, followed by the end of the string
(word) => (
y.includes(word)
? y
: word + ' ' + y
)
);
console.info(doReplace('pandas'));
console.info(doReplace('cat'));и мне нужно заменить panda на pandas, потому что он включен в pandas. ты тоже можешь это сделать?
Код в ответе делает это из-за теста .includes - нажмите «Выполнить фрагмент кода», чтобы увидеть.
хорошо, спасибо, последнее, что я инженер-строитель и изучаю архитектуру, но я люблю кодировать, по крайней мере, я так думаю, но это так сложно, поэтому я обратился к разработке веб-страниц, что легко и весело, но я действительно хочу хорошо понимать, что происходит в фон, но я не хочу тратить так много времени на бесполезные вещи, что вы можете порекомендовать, поэтому я немного исследую и решаю, делать или нет .. капитан
Это действительно обширная область - она довольно основана на мнениях, так что решать вам.
этот фрагмент не работает так, как вы описываете, я пытаюсь понять. не лениться, а просто хотел, чтобы вы знали.
не заменяет панду пандами добавляет к ним панд ягуар лев тигр панда панда ягуар лев тигр панда кошка
Ой, я этого не видел, надо делать y.includes(word), а не word.includes(y), я пропустил дублированные "панды"
Другое решение:
let x ='jaguar lion tiger panda'
let y = 'pandas'
let splited = x.split(' ')
let lastWord = splited[splited.length - 1]
if (y.indexOf(lastWord) >= 0){
splited[splited.length - 1] = y
}else{
splited.push(y)
}
let result = splited.join(' ')
console.info(result)Я пытаюсь это понять. похоже, это работает, спасибо.
function replaceLastWord(x, y) {
let result = x.split(' '), lastIndex = (result.length || 1) - 1, lastWord = result[lastIndex]
result[lastIndex] = y.indexOf(lastWord) !== -1 ? y : `${lastWord} ${y}`
return result.join(' ')
}
console.info(replaceLastWord('jaguar lion tiger panda', 'pandas'))
console.info(replaceLastWord('jaguar lion tiger panda', 'cat'))
console.info(replaceLastWord('', 'pandas'))
Регулярные выражения - очень мощный и лаконичный инструмент для сопоставления строк и управления ими. Программистам очень полезно знать их. Однако используемый здесь очень простой -
\S+соответствует непробельным символам, а$соответствует концу строки.