Remover pontuação de uma string em Java

Durante o processamento textual, se você estiver procurando por certas palavras e criando regras de correspondência de padrões, contando a frequência de elementos, etc. – a pontuação pode atrapalhar seus planos.

Muitas vezes, você desejará remover palavras irrelevantes, pontuação, dígitos ou outros alguns categoria de personagens, dependendo de qual é o seu objetivo final.

Neste breve tutorial, veremos como remover a pontuação de uma string em Java.

Remover pontuação da string com RegEx (expressões regulares)

As Expressões Regulares são um ajuste muito natural aqui, porque provavelmente farão parte de outras partes de processamento e porque são correspondências de padrões eficientes! Em Java, a expressão regular para pontuação correspondente é p{Punct} ou uma abreviação p{P}.

Você terá que escapar da primeira barra invertida em uma string, portanto, remover toda a pontuação é equivalente a combiná-los e substituí-los por um caractere vazio:

String.replaceAll("p{P}", "")

Vamos aplicá-lo a uma frase simples:

String text = "Hi! This is, in effect, a synthetic sentence. It's meant to have several punctuation characters!";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

Isto resulta em:

Hi This is in effect a synthetic sentence Its meant to have several punctuation characters

Vamos dar uma olhada em quais caracteres são tratados como pontuação aqui:

String text = "!#$%&'()*+,-./:;[email protected][]^_`{|}~";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

Com esses caracteres especiais – quais são deixados após a remoção da pontuação?

$+^`|~

Remover pontuação da string sem RegEx

Se você não quiser empregar expressões regulares, você pode fazer uma verificação manual enquanto itera por cada caractere de uma string. Lembre-se de usar um StringBuffer em vez de um String ao fazer isso, já que as strings são imutáveis ​​e as cópias precisam ser feitas toda vez que você quiser adicionar um caractere - então você estaria criando string.length número de strings na memória.

StringBuffer é mutável e pode ser facilmente convertido em uma string imutável no final do processo:

Confira nosso guia prático e prático para aprender Git, com práticas recomendadas, padrões aceitos pelo setor e folha de dicas incluída. Pare de pesquisar comandos Git no Google e realmente aprender -lo!

public static String removePunctuations(String s) {
    StringBuffer buffer = new StringBuffer();
    for (Character c : s.toCharArray()) {
        if(Character.isLetterOrDigit(c))
            buffer.append(c);
    }
    return buffer.toString();
}

Vamos criar uma string e limpá-la:

String text = "Hello! nHere are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ nWhere are they? :(n";
System.out.println(text);
String clean = removePunctuations(text);
System.out.println(clean);
Hello! 
Here are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ 
Where are they? :(

HelloHerearesomespecialcharactersWherearethey

Embora esse processo seja mais personalizável, ele verifica apenas letras e dígitos. Você pode verificar manualmente os códigos de caracteres como alternativa e excluir apenas alguns caracteres de pontuação - e deixar espaços em branco, quebras de linha etc.

Conclusão

Neste breve tutorial, demos uma olhada em como você pode remover pontuação ou certos caracteres especiais de uma string em Java, usando expressões regulares ou uma verificação manual em um for loop.

Carimbo de hora:

Mais de Abuso de pilha