Replace

Oi pessoal,

Estou no 1o ano de Sistemas de Informação e preciso desenvolver um exercício em que, se o usuário digitar alguma palavra com “nb” ou “np” (por exemplo, tanbém), o algoritmo deve corrigir.

Alguém sabe qual método devo usar? Tentei utilizar “replace”, mas aí todas as palavras são corrigidas, independentes de terem n antes de p ou b.

Obrigado!

Yuri

vc pode fazer uma condição, usando outros métodos de String

tenta varrer as letras utilizando o substring

Eu faria o exercício usando uma expressão regular.
yuriprk, poste o seu código aqui pra gente ver o que está errado e sugerir alguma coisa.

O objetivo do exercício é que o usuário digite um texto e este texto seja exibido sem acentos. Além disso, se ele digitar um “n” antes de p ou b, o algoritmo também deve corrigir.

A primeira parte, beleza… já na segunda, tentei várias coisas e nada… hehe


import javax.swing.JOptionPane;

public class replace {

public static void main (String arg[]) {

String aux, x;

aux = JOptionPane.showInputDialog(“Digite uma frase com, no máximo, 100 caracteres”);

// retira os acentos das vogais
aux = aux.replace (‘é’, ‘e’);
aux = aux.replace (‘É’, ‘E’);
aux = aux.replace (‘á’, ‘a’);
aux = aux.replace (‘Á’, ‘A’);
aux = aux.replace (‘Ã’, ‘A’);
aux = aux.replace (‘ã’, ‘a’);
aux = aux.replace (‘í’, ‘i’);
aux = aux.replace (‘Í’, ‘I’);
aux = aux.replace (‘ó’, ‘o’);
aux = aux.replace (‘Ó’, ‘O’);
aux = aux.replace (‘Õ’, ‘O’);
aux = aux.replace (‘õ’, ‘o’);
aux = aux.replace (‘ú’, ‘u’);
aux = aux.replace (‘Ú’, ‘U’);

/for (int y = 0; y<aux.length(); y++) {
if (charAt(y) == ‘n’ && (charAt (y+1) = ‘p’) or (charAt (i+1) = ‘b’)){
/

aux = replaceAll (‘np’, ‘mp’);

// exibe a mensagem sem os acentos
JOptionPane.showMessageDialog (null, " " +aux);
}

}

}>

iai cara,

olha só eu fiz um código aki, mas num testei todas as possibilidades, num sei se ta 100% mas tenta assim:

[code]import javax.swing.JOptionPane;

public class Corrigir{

public static void main(String[] args){
	
	String nova = "",str = JOptionPane.showInputDialog("Insira uma palavra");
	
	for(int i = 0; i < str.length(); i++){
		if(str.length() < 2+i)
			break;
			
			if(str.substring(i,2+i).equals("nb") || str.substring(i,2+i).equals("np")){				
				nova = str.replace('n','m');
		}
	}
	
	JOptionPane.showMessageDialog(null, "Nova String: " + nova);
}

}[/code]

flw

cara eu acho que da pra vc usar substring pegando uma variavel pro valor total no caso ai “y” criar outra variavel para varrer a palavra denovo (agora vc ja tem o tamanho total da palavra)e com o .equals() fazer a comparação
isso dentro de um if eu acho.

ai o código quebra a cabeça ai hehe.

bom foi o que eu disse haha

Dá uma olhada nesta classe.

OBS:
Acho que o metodo de String replace(String,String) so funciona no Java 5

[code]
public class Teste {

public static void main(String[] args) {
	Teste t = new Teste();
	System.out.println(t.trataN("tanbem"));		
	System.out.println(t.trataN("tambem"));
	System.out.println(t.trataN("tranpo"));		
	System.out.println(t.trataN("trampo"));


}

public String trataN(String str){
	String saida = null;
	if(str!= null){
		saida = str;
		saida = saida.replace("np","mp");
		saida = saida.replace("nb","mb");			
	}
	return saida;
}

}[/code]

Olá,
creio que o seguinte código resolva o problema, existem várias alterações a serem feitas para um melhor funcionamento.

[code]import javax.swing.*;
public class Test {
public static void main(String[] args) {
String st = JOptionPane.showInputDialog(null,“Digite a frase:”);
String a=st;
for (int i=0,j=1;j<st.length();i++,j++){
if((st.charAt(i)== ‘n’) & ((st.charAt(j)== ‘p’)|(st.charAt(j)== ‘b’))){
a = st.replace(‘n’, ‘m’);
}
}
System.out.println(a);
}

}[/code]
t+, boa sorte.

Deu certo! Usei esse código com a variável que criei e coloquei para exibir num popup.

Muito obrigado pela ajuda, galera!

Abraços.