Como Acentuar um caractere de uma string independente da fonte

14 respostas
A

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?? :?

14 Respostas

A

teste.replaceAll("[o]",“ö”);
teste.replaceAll("[O]",“Ö”);

A

alanrodrigues:
teste.replaceAll("[o]",“ö”);
teste.replaceAll("[O]",“Ö”);

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”

J

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.

A

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.

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 :confused:

J

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.

A

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.

E como gravo o caractere alterado na String depois?

D

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…

V

if (teste.equalsIgnoreCase("exemplo")) { if (teste.charAt(6) == 'O') { teste = teste.substring(0,6) + teste.charAt(6) == 'O' ? "Ö" : "ö"; } }

A

ViniGodoy:
if (teste.equalsIgnoreCase("exemplo")) { if (teste.charAt(6) == 'O') { teste = teste.substring(0,6) + teste.charAt(6) == 'O' ? "Ö" : "ö"; } }

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??

V

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.

E

aero_wil:

Será que é possível não alterar a forma da palavra e só adicionar o acento??

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.

A

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.

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?

A

entanglement:
aero_wil:

Será que é possível não alterar a forma da palavra e só adicionar o acento??

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.

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.

E

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 :slight_smile: )

Criado 18 de abril de 2013
Ultima resposta 19 de abr. de 2013
Respostas 14
Participantes 6