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

par exemple, j'extrait une chaîne de caractères d'un fichier texte et j'ai besoin de ces mots pour former un tableau. Cependant, quand je fais tout ce que certains mots se terminent par virgule (,) ou un point (.) ou même avoir des crochets attachés à eux (ce qui est parfaitement normal).

ce que je veux, 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 en Java, mais je ne peux pas m'en passer.

40
demandé sur gvlasov 2009-12-26 02:09:10

7 réponses

utiliser:

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

remplace prend une expression régulière . Ceci:

[,.]

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

17
répondu OMG Ponies 2016-10-22 14:12:00

Réaffecter la variable d'une sous-chaîne:

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

aussi 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
répondu Mark Byers 2009-12-25 23:15:05

Pour supprimer le dernier caractère ne Marque Byers dit

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

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

comme dans:

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

et

s = s.replace(".","");
7
répondu Tom Neyland 2017-05-23 11:48:34

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 sous-chaîne de l'ancienne chaîne, moins le dernier caractère.

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

4
répondu bmargulies 2009-12-25 23:10:09

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, il ne fonctionne pas très bien

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

ou

String.replaceAll("\$", "");   //if it is a path
3
répondu AlexGach 2013-09-20 19:19:39

notez que les limites des mots dépendent aussi de la localisation. Je pense que la meilleure façon de le faire en utilisant java standard.texte.BreakIterator. Voici un exemple de la java.sun.com tutoriel.

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
répondu Chandra Patni 2009-12-25 23:21:05

vous pouvez utiliser replaceAll() méthode:

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

etc..

0
répondu fastcodejava 2009-12-25 23:22:28