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 Deniz F
      Sou iniciante, aprendendo JS. Fiquei com dúvida sobre o funcionamento das referências externas.
      Coloquei funções no arquivo app.js e funcionam sem problemas.
       
      Mas os códigos dentro da tag <script> só funcionam no HTML. Se colocar no arquivo .js (sem as tags obviamente) não está funcionando. 
      Alguém saberia me dizer por quê?
       
      Obrigado.
       
       
      <html>
          <head>
              <script src="app.js"></script>
          </head>
       
          <body>
       
              <p id="sentence" onmouseover="changeSize()" onmouseout="backToSize()">Testing app.js functions. They work!</p>  
              <p id="result"></p>
                      
                 <script>
                  var x = 20;
                  var y = 30;
                  var z = x + y;
                  document.getElementById("result").innerHTML = "The result is " + z;
              </script>
       
         </body>
      </html>
    • By barrigademel
      <head> <!-- Favicon --> <link href='http://www.iconj.com/ico/e/9/e993nwoswx.ico' rel='shortcut icon' type='image/x-icon'/> Não importa como eu adicione ou mude o campo favicon, ele simplesmente não sobe. já tentei re-fazer umas 15x, e mandar as 15 pro head todas sobem sem erro, mas não muda o favicon
    • By sander147
      Boa Tarde, estou com um problema ao por o menu ao lado direito, ele não fica alinhado com o campo de notícias, eu não faço ideia de como fazer eles ficarem lado a lado, alguém poderia me dar uma luz? eu estou seguindo um livro da casa do código mas os resultados não saíram iguais depois que eu fui além do livro. :/
      Deveria ficar assim:
       https://uploaddeimagens.com.br/images/002/561/267/original/menu.png?1585683825
       
      Ficou assim:

    • By binds
      Olá Caríssimos,
       
      Não tenho muito conhecimento de javascript, desde já agradeço se alguém puder me ajudar.
      Preciso criar uma página simples de validação por idade para acessar uma página, a ideia é simples:
      se a pessoa nasceu antes de 2002 redireciona a página meusite_com_br/maior 
      mas se ela nasceu depois de 2002 redireciona a página meusite_com_br/menor
      Garimpando achei o código abaixo que fiz alguns ajustes, porém não sei como abrir as respectivas paginas meusite_com_br/menor ou meusite_com_br/maior como resultado, o resultado nesse caso são textos:  "MENOR 18" : "MAIOR DE 18"
       
      <!DOCTYPE html> <html> <body> <CENTER> <h2>Validador de Idade</h2> <p>Digite o ano que você nasceu para acessar o site:</p> <input id="age" value="Ex: 1990" /> <br> <button onclick="myFunction()">ACESSAR SITE</button> <p id="demo"></p> <script> function myFunction() {   var age, voteable;   age = Number(document.getElementById("age").value);   if (isNaN(age)) {     voteable = "Você não inseriu um ano válido. <BR> Exemplo: 2020";   } else {     voteable = (age > 2002) ? "MENOR 18" : "MAIOR DE 18";   }   document.getElementById("demo").innerHTML = voteable; } </script> </CENTER> </body> </html>  
      Novamente agradeço a ajuda!
      Luis
       
    • By vcapelli
      Eu sei o que eu vou pedir é meio loucura mas espero que ao menos seja possível. É o seguinte: eu quero fixar um valor X e sempre depois das 18 horas esse valor atualizasse aumentando ou diminuindo de acordo com a bolsa de valores. Exemplo:
      Orçamento 100bi, hoje a bolsa fechou em queda de 2,73% então ela atualizaria para 97,27bi.
      Eu sei que é loucura mas se for possível realizar agradeceria imensamente, não precisam ter pressa também
×

Important Information

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