Troca de String em uma Frase

Pessoal tenhu que fazer um programa que recebe uma frase e depois mais duas string uma que tem na frase e outra para colocar no lugar da primeira, ou seja:

String frase
String palavra;
String palavra_ser_trocada;

Ex: Estou na minha casa
palavra: casa
palavra_ser_trocada: escola

Imprimir: Estou na minha escola

import javax.swing.*;

public class TrocaString{

public static void main (String args[]){
String frase;
String palavra_retirar_frase;//uma palavra que contenha na frase
String palavra_coloca_frase; //uma palavra qualquer

frase=JOptionPane.showInputDialog("Entre com uma frase"); //Ex: Estou na minha casa	

palavra_retirar_frase=
JOptionPane.showInputDialog("Entre com uma Palavra que contenha na frase");//Ex: casa

palavra_coloca_frase=
JOptionPane.showInputDialog("Entre com a palavra pra trocar com a Palavra Retirada");//Ex: escola



}

}

e nao pode usar replace…

Você não pode usar replace (que aliás não faz o que você quer - replace serve apenas para trocar um caracter por outro, o que normalmente é inútil), mas pode usar replaceAll?

Isso é coisa de escola.

De qualquer maneira, é só chato. Procure saber como é que funcionam os métodos indexOf e substring. Lembre-se que indexOf retorna -1 se não achar, e a posição da palavra procurada, se achar (a posição começa por 0).

Poderia dar algum exemplo nao tenhu idéia disso ?

Ai vai:

String teste = "uma frase qualquer";
System.out.println(teste.substring(teste.indexOf("frase")));
System.out.println(teste.substring(teste.indexOf("frase"))); 

Usando essa ideia vc teria que fazer:

1 - com esse metodo vc vai ter onde a palavra começa;
2 - entao vai ter que saber o tamanho da palavra;
3 - pra poder tirar, usando por examplo o replace, passando a palavra nova;
4 - ou vc pode dar uma lida como usar o regex da API.

Boa sorte

Você me deve uma Original no bar da facu:

String frase = "Teste muito loko e tosco p kramba";
String retirar = "muito";
String colocar = "bem";
if(frase.contains(retirar)){
System.out.println(frase.substring(0,frase.indexOf(retirar)) + colocar + frase.substring(frase.indexOf(retirar)+retirar.length()));
}

Opa!

Replace funciona sim, fera!

Confere comigo:

[code]String frase = “Estou na minha casa”;
String palavra_retirar_frase = “casa”;//uma palavra que contenha na frase
String palavra_coloca_frase = “BMW”; //uma palavra qualquer

System.out.println(frase.replace(palavra_retirar_frase, palavra_coloca_frase));[/code]

Abcs!

Hum, eu ia tomar pau na certificação. De fato, há um método replace (CharSequence, CharSequence) que troca uma seqüência fixa por outra seqüência fixa - ela apareceu no Java 5.0.

SAuhuashaushusaHuhasuHASuhASUH!

Por isso q eu gosto de sempre conferir esses métodos no ‘ctrl + espaço’ do Eclipse!

Obrigado pela ajuda de todos vcs… Mas a segunda do pedrosa foi a que mais me ajudou…Devo uma original pra ele…rs… Pedrosa vc pode me explicar o que faz esses comandos ?

if(frase.contains(retirar)){
System.out.println
(frase.substring(0,frase.indexOf(retirar)) + colocar + frase.substring
(frase.indexOf(retirar)+retirar.length()));

Dai pago duas Original…

Puxa… O cara não gostou da minha solução!
=’(

Mas o código do Pedrosa procura a String que vc quer retirar e se encontrar ele concatena e imprime:

O que tem antes da string q vai ser retirada

frase.substring(0,frase.indexOf(retirar))

a string substituta

colocar

o que tem depois da string q vai ser retirada

frase.substring (frase.indexOf(retirar)+retirar.length()))

Blza, fera?

*Brinca com coisa séria não, hein? Vou cobrar essa Original!

[quote=dnsmaster]Obrigado pela ajuda de todos vcs… Mas a segunda do pedrosa foi a que mais me ajudou…Devo uma original pra ele…rs… Pedrosa vc pode me explicar o que faz esses comandos ?

if(frase.contains(retirar)){
System.out.println
(frase.substring(0,frase.indexOf(retirar)) + colocar + frase.substring
(frase.indexOf(retirar)+retirar.length()));

Dai pago duas Original…[/quote]

1 Primeiramente o if do contains verifica se a ocorrencia a ser trocada existe na sua frase.
2 Faço um um substring de 0 ate posição da String a ser retirada e concateno a nova String
3 Monto o resto da frase com outro substring a partir da posição da String a ser retirada que caso foi substituida + tamanho desse String até o fim note que nesse substring nao coloco a posição final pois não preciso por que vai ate fim.

Estude a classe String e Expressão Regular que em muitos casos pode salvar sua pele!

Para ficar bem mais simples esse problema, seria usar o StringBuiler(or Buffer).
Usuaria os metodos delete e insert (apos achar a subString), na hora de modificar a frase.
8)

To iniciando java agora, mas a resposta do ddmizu, é muito de boa.
Pedi pra digitar uma frase com o nome do usuario e troquei o nome do cara por outra coisa. (Pra teste)

Tranquilo demais o frase.replace!
Dá pra ficar mais simples que isso? haha

Vlw :slight_smile:

[quote=renanpontez]To iniciando java agora, mas a resposta do ddmizu, é muito de boa.
Pedi pra digitar uma frase com o nome do usuario e troquei o nome do cara por outra coisa. (Pra teste)

Tranquilo demais o frase.replace!
Dá pra ficar mais simples que isso? haha

Vlw :)[/quote]

Mais simples que isso impossível. Mas pessoal, mas tomem cuidado. Para trabalhos de faculdade é bem possível que o seu professor esteja interessado que você desenvolva o algoritmo para fazer a substituição. Usar API pronta nestes casos é pedir pra tomar bomba.

Pois é, tentei fazer como eu fazia em C, com repetição e tal, mas olhei esse tópico e resolveu, hahaha!

Valeu :slight_smile: