テキスト処理中、特定の単語を検索してパターン マッチング ルールを作成するかどうか、要素の頻度をカウントするかどうかなど、句読点は計画にレンチを投げかける可能性があります。
多くの場合、ストップワード、句読点、数字などを削除する必要があります 一部 あなたの最終目標が何であるかに応じて、文字のカテゴリ。
この短いチュートリアルでは、Java で文字列から句読点を削除する方法を見ていきます。
RegEx (正規表現) を使用して文字列から句読点を削除する
正規表現は、他の処理部分の一部になる可能性が高く、効率的なパターン マッチャーであるため、ここでは非常に自然に適合します。 Java では、一致する句読点の正規表現は次のとおりです。 p{Punct}
または略記 p{P}
.
文字列の最初のバックスラッシュをエスケープする必要があるため、すべての句読点を削除することは、それらを一致させて空の文字に置き換えることと同じです。
String.replaceAll("p{P}", "")
簡単な文に適用してみましょう。
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);
この結果:
Hi This is in effect a synthetic sentence Its meant to have several punctuation characters
ここで句読点として扱われる文字を見てみましょう。
String text = "!#$%&'()*+,-./:;[email protected][]^_`{|}~";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);
これらの特殊文字で - 句読点を削除した後に残るのはどれですか?
$+^`|~
正規表現なしで文字列から句読点を削除する
正規表現を使用したくない場合は、文字列の各文字を反復しながら手動でチェックできます。 使用することを忘れないでください StringBuffer
の代わりに String
これを行っている間、文字列は不変であり、文字を追加するたびにコピーを作成する必要があるため、作成することになります string.length
メモリ内の文字列の数。
StringBuffer
可変であり、プロセスの最後に簡単に不変の文字列に変換できます。
ベストプラクティス、業界で認められた標準、および含まれているチートシートを含む、Gitを学習するための実践的で実用的なガイドを確認してください。 グーグルGitコマンドを停止し、実際に 学ぶ それ!
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();
}
文字列を作成してきれいにしましょう。
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
このプロセスはよりカスタマイズ可能ですが、文字と数字のみをチェックします。 代わりに文字コードを手動でチェックし、代わりに一部の句読点のみを除外して、空白や改行などを残すことができます。
まとめ
この短いチュートリアルでは、Java の文字列から句読点や特定の特殊文字を削除する方法について説明しました。 for
ループ。