Jump to content
thgsousa312

Funcao para substituir a ultima palavra de uma frase

Recommended Posts

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";
}

Share this post


Link to post
Share on other sites
On 6/24/2019 at 5:57 PM, thgsousa312 said:

    var a = frase.lastIndexOf(strAntiga);
    var fras2 = frase.lastIndexOf(strAntiga).replace(strAntiga,strNova);

    document.getElementById("demo").innerHTML = "Certo";

O código ficou ótimo, mas deixando uma dúvida, você declarou "var a = frase.lastIndexOf(strAntiga);"
Mas não a usou, nesse caso ela poderia ser retirada? ou se usou, onde usou?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Vinicius Bazan
      Galera to com uma duvida aqui, no javascript é possível fazer uma função dentro de outra e uma acessar os valores de uma var da outra?
       
      Por exemplo digamos que eu tenha uma function a() e uma function b(), eu preciso que a function a utilize valores de variáveis que estarão na function b, se isto for possível a função b terá que estar dentro de a ou seria ao contrario?
    • By israel@iproduce.com.br
      Olá,
      Boa noite!
      Tenho algumas vagas para motion (basicamente banner de internet animado e vinhetas para redes sociais) para a cidade do Rio de Janeiro. As vagas são temporárias (6 meses), podendo ocorrer a efetivação nesse período. É necessário estar alocado no escritório no Rio.
      Conhecimento avançado em: Adobe Animate CC, Google Web Designer, After Effects.
      Além destes programas é um diferencial conhecer a linguagens: HTML5, CSS3 e Javascript.
      Tem interesse ou conhece alguém que esteja precisando? Então manda o seu portifólio e CV para no e-mail: freela@iproduce.com.br
      Boa sorte!
    • By Ewfc2005
      Gostaria de saber como eu devo fazer para alinhar 3 imagens lado a lado, sem fazer o site deixar de ser responsivo.
      que fique igual ao desse site
       
      https://ciesalon.com/
       
    • By Vinicius Bazan
      Sou leigo ainda no Java Script e não manjo de muita coisa ainda, eu preciso fazer uma função que que deve ser executada na pagina HTML, eu crio a função dentro da tag <script> na <head> do html, mas como eu chamo essa função no momento que eu precisar no <body>, o que eu devo digitar pro código saber que ali deve executar a função?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.