Saudações Galera!
Me ajudem por favor em uma duvida aqui…
por exemplo… :roll:
Quero colocar dois pontos em cima do caractere “o” ou “O” de uma string que contenha “exemplo”:
String teste = "Exemplo de teste";
teste = teste.replace("exemplo", "exemplö");
Esse método não esta servindo pois caso a palavra “exemplo” estiver assim: “eXEmplo” ou “exemplO” não acontece nada.
Como posso fazer?? :?
teste.replaceAll("[o]",“ö”);
teste.replaceAll("[O]",“Ö”);
[quote=alanrodrigues]teste.replaceAll("[o]",“ö”);
teste.replaceAll("[O]",“Ö”);[/quote]
obrigado pela resposta Alan,
Mais com esse método eu posso acabar substituindo as outras palavras da string e eu não quero, por exemplo se ele for assim : “Exemplo do Texto”
Bom, vc pode usar o charAt(int index), pra verificar os caracteres e ver em qual vc quer colocar o replace.
Use o replace comum, str.replace(“o”,“ö”);
public class Programa
{
public static void main(String[] args)
{
String str = “Exemplo de teste”;
// Pega os caracteres nas posições 0 e 12.
// Podendo ser usado um for para fazer essa verificação e pegar todos os caracteres da string
// O charAt retorna um char, tipo primitivo;
int index1 = str.charAt(0);
int index2 = str.charAt(6);
// Printa os resultados na tela.
System.out.println("O caractere da posição 0 é " +
(char)index1);
System.out.println("O caractere da posição 12 é " +
(char)index2);
}
}
/*
Saída:
O caractere da posição 0 é E
O caractere da posição 0 é o
*/
Espero ter ajudado.
[quote=JulioSilveira]Bom, vc pode usar o charAt(int index), pra verificar os caracteres e ver em qual vc quer colocar o replace.
Use o replace comum, str.replace(“o”,“ö”);
public class Programa
{
public static void main(String[] args)
{
String str = “Exemplo de teste”;
// Pega os caracteres nas posições 0 e 12.
// Podendo ser usado um for para fazer essa verificação e pegar todos os caracteres da string
// O charAt retorna um char, tipo primitivo;
int index1 = str.charAt(0);
int index2 = str.charAt(6);
// Printa os resultados na tela.
System.out.println("O caractere da posição 0 é " +
(char)index1);
System.out.println("O caractere da posição 12 é " +
(char)index2);
}
}
/*
Saída:
O caractere da posição 0 é E
O caractere da posição 0 é o
*/
Espero ter ajudado.[/quote]
Julio mais se a palavra “Exemplo” estiver no meio da string e estiver com o “o” em maiúsculo e quero manter ele em maiúsculo ou minusculo se estiver.
Com esse método não vai dar certo 
Você pode converter o char de retorno para String, e usar o método equals(“sua letra aqui”) para fazer a comparação.
Ex:
if(stringChatConvertido.equal(“o”)){
str = str.replace(“o”,“ö”);
}else if(stringChatConvertido.equal(“O”)){
str = str.replace(“O”,“Ö”);
}
Creio que seja isso que vc pediu, caso n seja, n entendi a dúvida.
[quote=JulioSilveira]Você pode converter o char de retorno para String, e usar o método equals(“sua letra aqui”) para fazer a comparação.
Ex:
if(stringChatConvertido.equal(“o”)){
str = str.replace(“o”,“ö”);
}else if(stringChatConvertido.equal(“O”)){
str = str.replace(“O”,“Ö”);
}
Creio que seja isso que vc pediu, caso n seja, n entendi a dúvida.[/quote]
E como gravo o caractere alterado na String depois?
acho que o que vc quer realmente é o Escape Caracter…
Para imprimir algo assim:
“Diga “Hora Mundo!”.” Frase normal
“Diga \x22Hora Mundo!\x22.” Frase com Escape
alanrodrigues leia o que estão pedindo antes de sair postando… tem outro poste seu que vc fez o mesmo…
if (teste.equalsIgnoreCase("exemplo")) {
if (teste.charAt(6) == 'O') {
teste = teste.substring(0,6) + teste.charAt(6) == 'O' ? "Ö" : "ö";
}
}
[quote=ViniGodoy]if (teste.equalsIgnoreCase("exemplo")) {
if (teste.charAt(6) == 'O') {
teste = teste.substring(0,6) + teste.charAt(6) == 'O' ? "Ö" : "ö";
}
}
[/quote]
Vini seu método serviria se minha string contivesse apenas a palavra que eu queria modificar, mais nesse caso ela pode estar em qualquer lugar no texto contido na string.
Encontrei o seguinte método que esta quase resolvendo… o problema que ele altera o estado da palavra, por exemplo
Entra :eXemPlo
Sai : exemplö
Mais pelo menos ele esta colocando o acento no “o” em qualquer palavra “exemplo” dentro da string.
teste= teste.replaceAll("(?i)exemplo", "exemplö");
Será que é possível não alterar a forma da palavra e só adicionar o acento??
Se a saída pode ser toda em minúscula é só rodar o toLowerCase() e depois usar um replace comum.
Para alterar meu algoritmo para rodar em qualquer lugar da String, basta rodar um indexOf antes e usar o índice como referência.
[quote=aero_wil]
Será que é possível não alterar a forma da palavra e só adicionar o acento??[/quote]
A resposta simples é: um replaceAll apenas não faz isso (o único lugar em que vi uma coisa dessas funcionar foi no MS-Word).
Você precisa localizar manualmente (via Matcher.find()) o local da palavra, e então, letra por letra, verificar qual é o “case” dela.
[quote=ViniGodoy]Se a saída pode ser toda em minúscula é só rodar o toLowerCase() e depois usar um replace comum.
Para alterar meu algoritmo para rodar em qualquer lugar da String, basta rodar um indexOf antes e usar o índice como referência.[/quote]
Vini ,
O texto não pode ser todo em minúsculo, tem que manter e a forma original.
Se eu colocar um indexOf em seu método ele ira encontrar apenas uma palavra “exemplo”, e se na string contiver 2 ou mais?
[quote=entanglement][quote=aero_wil]
Será que é possível não alterar a forma da palavra e só adicionar o acento??[/quote]
A resposta simples é: um replaceAll apenas não faz isso (o único lugar em que vi uma coisa dessas funcionar foi no MS-Word).
Você precisa localizar manualmente (via Matcher.find()) o local da palavra, e então, letra por letra, verificar qual é o “case” dela. [/quote]
Vlw pela resposta,
Você poderia dar um exemplo de como fazer isso com apenas uma palavra dentro de uma string? lembrando que essa string pode conter varias delas.
Estou supondo que você queira na verdade sempre corrigir os acentos de uma palavra que está com os acentos errados, certo?
Então separe sua string em palavras, corrija os acentos, e monte a string de volta. (Tradução: procure um exemplo você mesmo
)