Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
uma função que recebe uma frase e uma palavra antiga e uma palavra nova. A função deve retornar uma string contendo a frase original, mas com a última ocorrência da palavra antiga substituída pela palavra nova. A entrada e saída de dados deve ser feita no programa principal. Exemplo:
Frase: “Quem parte e reparte fica com a maior parte”
Palavra antiga: “parte” Palavra nova: “parcela”
Resultado a ser impresso no programa principal: “Quem parte e reparte fica com a maior parcela”
function trocarNome(){
var frase = document.getElementById("frase").value;
var strAntiga = document.getElementById("strAntiga").value;
var strNova = document.getElementById("strNova").value;
//frase = frase.split(" ");
var a = frase.lastIndexOf(strAntiga);
var fras2 = frase.lastIndexOf(strAntiga).replace(strAntiga,strNova);
document.getElementById("demo").innerHTML = "Certo";
}O problema do seu código e que você sempre irá buscar a ultima palavra independente se for "parte" ou não, o correto seria buscar pela ultima ocorrência da palavra parte que é o que está sendo pedido no enunciado eu fiz dois exemplos, um usando Regex que é o que eu usaria e outro usando alguns metodos do javascript de manipulação de array.
/// Esse exemplo eu fiz poucas alterações apenas busquei a funcionalidade
function trocarNome(){
var frase = document.getElementById("frase").value;
var strAntiga = document.getElementById("strAntiga").value;
var strNova = document.getElementById("strNova").value;
frase = frase.split(" ");
var newSemteced = replaceValueList(frase, strAntiga, strNova);
document.getElementById("result").innerHTML = newSemteced;
}
function replaceValueList(frase, strAntiga, strNova) {
var reverseSentece = frase.reverse();
var findedIndex = reverseSentece.findIndex(itemArray => itemArray === strAntiga);
reverseSentece[findedIndex] = strNova;
var newSentenceReverse = reverseSentece.reverse();
return newSentenceReverse.join(' ');
}
//Agora o código que eu me sentiria melhor em desenvolver
// Alternative solution
function trocarNome2() {
var frase = getValue("frase");
var strAntiga = getValue("strAntiga");
var strNova = getValue("strNova");
var regex = buildRegex(strAntiga);
var newSentence = replaceLastOccurrence(frase, regex, strNova);
setSentence(newSentence);
}
function buildRegex(strAntiga) {
return strAntiga+'$';
}
function setSentence(sentence) {
document.getElementById("result").innerHTML = sentence;
}
function replaceLastOccurrence(frase, regex, strNova) {
return frase.replace(new RegExp(regex), strNova);
}
function getValue(idElement) {
return document.getElementById(idElement).value;
}
JSBin: [https://jsbin.com/keyotoseyu/edit?html,js,console,output](https://jsbin.com/keyotoseyu/edit?html,js,console,output)
>
On 6/24/2019 at 5:57 PM, thgsousa312 said: