web-dev-qa-db-fra.com

Comment supprimer des caractères spécifiques d'une chaîne particulière en Java?

Par exemple, j'extrais une chaîne de texte à partir d'un fichier texte et j'ai besoin de ces mots pour former un tableau. Cependant, lorsque je fais tout cela, certains mots se terminent par une virgule (,) ou un point (.) Ou même des crochets sont attachés (ce qui est parfaitement normal).

Ce que je veux faire, c'est me débarrasser de ces personnages. J'ai essayé de le faire en utilisant ces méthodes de chaîne prédéfinies dans Java mais je ne peux tout simplement pas le contourner.

40
Slavisa Perisic

Utilisation:

String str = "whatever";
str = str.replaceAll("[,.]", "");

replaceAll prend expression régulière . Cette:

[,.]

... recherche chaque virgule et/ou période.

17
OMG Ponies

Réaffectez la variable à une sous-chaîne:

s = s.substring(0, s.length() - 1)

Également une autre façon de résoudre votre problème: vous pouvez également envisager d'utiliser un StringTokenizer pour lire le fichier et définir les délimiteurs pour être les caractères que vous ne voulez pas faire partie des mots.

181
Mark Byers

Pour supprimer le dernier caractère, faites comme Mark Byers dit

s = s.substring(0, s.length() - 1);

De plus, une autre façon de supprimer les caractères dont vous ne voulez pas serait d'utiliser la méthode .replace(oldCharacter, newCharacter).

un péché:

s = s.replace(",","");

et

s = s.replace(".","");
7
Tom Neyland

Vous ne pouvez pas modifier une chaîne en Java. Ils sont immuables. Tout ce que vous pouvez faire est de créer une nouvelle chaîne qui est une sous-chaîne de l'ancienne chaîne, moins le dernier caractère.

Dans certains cas, un StringBuffer peut vous aider à la place.

4
bmargulies

La meilleure méthode est ce que Mark Byers explique:

s = s.substring(0, s.length() - 1)

Par exemple, si nous voulons remplacer\to space "" par ReplaceAll, cela ne fonctionne pas correctement

String.replaceAll("\\", "");

ou

String.replaceAll("\\$", "");   //if it is a path
3
AlexGach

Notez que les limites de Word dépendent également des paramètres régionaux. Je pense que la meilleure façon de le faire en utilisant Java.text.BreakIterator standard. Voici un exemple du didacticiel Java.Sun.com.

import Java.text.BreakIterator;
import Java.util.Locale;

public static void main(String[] args) {
    String text = "\n" +
            "\n" +
            "For example I'm extracting a text String from a text file and I need those words to form an array. However, when I do all that some words end with comma (,) or a full stop (.) or even have brackets attached to them (which is all perfectly normal).\n" +
            "\n" +
            "What I want to do is to get rid of those characters. I've been trying to do that using those predefined String methods in Java but I just can't get around it.\n" +
            "\n" +
            "Every help appreciated. Thanx";
    BreakIterator wordIterator = BreakIterator.getWordInstance(Locale.getDefault());
    extractWords(text, wordIterator);
}

static void extractWords(String target, BreakIterator wordIterator) {
    wordIterator.setText(target);
    int start = wordIterator.first();
    int end = wordIterator.next();

    while (end != BreakIterator.DONE) {
        String Word = target.substring(start, end);
        if (Character.isLetterOrDigit(Word.charAt(0))) {
            System.out.println(Word);
        }
        start = end;
        end = wordIterator.next();
    }
}

Source: http://Java.Sun.com/docs/books/tutorial/i18n/text/Word.html

0
Chandra Patni

Vous pouvez utiliser la méthode replaceAll():

String.replaceAll(",", "");
String.replaceAll("\\.", "");
String.replaceAll("\\(", "");

etc..

0
fastcodejava