web-dev-qa-db-ja.com

Javaの特定の文字列から特定の文字を削除するにはどうすればよいですか?

たとえば、テキストファイルからテキスト文字列を抽出していますが、配列を作成するにはこれらの単語が必要です。ただし、すべてのことを行うと、一部の単語がコンマ(、)またはフルストップ(。)で終わるか、角かっこが付いています(すべて完全に正常です)。

私がやりたいのは、それらのキャラクターを取り除くことです。 Javaの事前定義されたStringメソッドを使用してこれを実行しようとしましたが、それを回避することはできません。

40
Slavisa Perisic

つかいます:

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

replaceAll正規表現 を取ります。この:

[,.]

...各コンマおよび/またはピリオドを探します。

17
OMG Ponies

変数をサブストリングに再割り当てします。

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

また、問題を解決する別の方法: StringTokenizer を使用してファイルを読み取り、区切り文字を単語の一部にしたくない文字に設定することを検討することもできます。

181
Mark Byers

最後の文字を削除するには、 Mark Byers のようにします

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

さらに、不要な文字を削除する別の方法は、.replace(oldCharacter, newCharacter)メソッドを使用することです。

次のように:

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

そして

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

Javaで文字列を変更することはできません。それらは不変です。できることは、古い文字列のサブ文字列から最後の文字を除いた新しい文字列を作成することだけです。

場合によっては、代わりにStringBufferが役立ちます。

4
bmargulies

最良の方法は、マーク・バイヤーズが説明するものです:

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

たとえば、スペース ""の\をReplaceAllに置き換えたい場合、うまく動作しません

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

または

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

単語の境界もロケールに依存することに注意してください。標準の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

0
Chandra Patni

replaceAll()メソッドを使用できます:

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

等..

0
fastcodejava