Replace

10 respostas
Y

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

10 Respostas

cs.santos0

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

foxlaw

tenta varrer as letras utilizando o substring

Adolfo_Rodrigues

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.

Y

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);

}

}

}>

cs.santos0

iai cara,

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

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

flw

foxlaw

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.

foxlaw

bom foi o que eu disse haha

alf_f2

Dá uma olhada nesta classe.

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

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

}
L

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

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

}
t+, boa sorte.
Y

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.

Criado 18 de setembro de 2007
Ultima resposta 19 de set. de 2007
Respostas 10
Participantes 6