Как удалить определенные символы из определенной строки в Java? - PullRequest
40 голосов
/ 26 декабря 2009

Например, я извлекаю текстовую строку из текстового файла, и мне нужны эти слова для формирования массива. Тем не менее, когда я делаю все это, некоторые слова заканчиваются запятой (,) или точкой (.) Или даже имеют скобки (что совершенно нормально).

Я хочу избавиться от этих персонажей. Я пытался сделать это, используя эти предопределенные методы String в Java, но я просто не могу обойти это.

Ответы [ 7 ]

181 голосов
/ 26 декабря 2009

Переназначить переменную на подстроку:

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

Также альтернативный способ решения вашей проблемы: вы также можете рассмотреть возможность использования StringTokenizer для чтения файла и установки разделителей в качестве символов, которые вы не хотите использовать в словах.

17 голосов
/ 26 декабря 2009

Использование:

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

replaceAll принимает регулярное выражение . Это:

[,.]

... ищет каждую запятую и / или точку.

7 голосов
/ 26 декабря 2009

Для удаления последнего символа сделайте как Марк Байерс сказал

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

Кроме того, другой способ удаления нежелательных символов - использование метода .replace(oldCharacter, newCharacter).

как в:

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

и

s = s.replace(".","");
4 голосов
/ 26 декабря 2009

Вы не можете изменить строку в Java. Они неизменны. Все, что вы можете сделать, это создать новую строку, которая является подстрокой старой строки, минус последний символ.

В некоторых случаях вам может помочь StringBuffer.

3 голосов
/ 26 июня 2012

Лучший метод - это то, что объясняет Марк Байерс:

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

Например, если мы хотим заменить \ to space на "ReplaceAll, он не будет работать нормально

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

или

String.replaceAll("\\$", "");   //if it is a path
0 голосов
/ 26 декабря 2009

Вы можете использовать replaceAll() метод:

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

и т.д ..

0 голосов
/ 26 декабря 2009

Обратите внимание, что границы слова также зависят от локали. Я думаю, что лучший способ сделать это с помощью стандартного java.text.BreakIterator. Вот пример из учебника 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();
    }
}

Источник: http://java.sun.com/docs/books/tutorial/i18n/text/word.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...