Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaの正規表現で文字列から母音を削除する方法をわかりやすく解説

Javaでは、正規表現(Regex)を活用することで、文字列から母音(a・e・i・o・u およびそれぞれの大文字)を簡単に取り除くことができます。この記事では、replaceAll()メソッドを使うシンプルな方法と、Pattern・Matcherクラスを使って削除した母音を抽出する方法を、サンプルコード付きで解説します。

正規表現の文字クラスで母音を表す

正規表現における文字クラス「[ ]」は、角括弧内に列挙した文字のいずれか1文字にマッチします。たとえば「[xyz]」は、x・y・zのどれか1文字に一致するパターンです。

同じ要領で、次のパターンは英字の母音すべてにマッチします。

"[aeiouAEIOU]"

このパターンにマッチした文字を空文字列 "" に置き換えれば、文字列から母音だけを削除できます。置換にはStringクラスのreplaceAll()メソッドを使用します。

例1:replaceAll()メソッドで母音を削除する

もっともシンプルなのが、replaceAll()メソッドに母音のパターンと空文字列を渡す方法です。

public class RemovingVowels {
    public static void main(String args[]) {
        String input = "Hi welcome to tutorialspoint";
        String regex = "[aeiouAEIOU]";
        String result = input.replaceAll(regex, "");
        System.out.println("結果: " + result);
    }
}

実行結果

結果: H wlcm t ttrlspnt

母音がすべて取り除かれ、子音とスペースだけが残っていることが確認できます。わずか数行のコードで処理できるのが魅力です。

例2:PatternとMatcherで母音を抽出しながら削除する

java.util.regexパッケージのPatternクラスMatcherクラスを使うと、「削除した母音をあとで利用したい」といったケースにも柔軟に対応できます。次の例では、ユーザーから文字列を入力として受け取り、母音を除去した文字列と、取り除かれた母音をそれぞれ出力します。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("文字列を入力してください:");
        String input = sc.nextLine();
        String regex = "[aeiouAEIOU]";
        String vowels = "";  // 取り除いた母音を格納
        System.out.println("入力文字列:\n" + input);
        // パターンオブジェクトを作成
        Pattern pattern = Pattern.compile(regex);
        // コンパイル済みパターンを文字列に適用
        Matcher matcher = pattern.matcher(input);
        // 結果を格納するためのStringBufferを作成
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            vowels = vowels + matcher.group();
            matcher.appendReplacement(sb, "");
        }
        matcher.appendTail(sb);
        System.out.println("結果:\n" + sb.toString() + vowels);
    }
}

実行結果

文字列を入力してください:
this is a sample text
入力文字列:
this is a sample text
結果:
ths s smpl txtiiaaee

この例では、find()メソッドで母音を順番に検出し、appendReplacement()で空文字列に置き換えながら結果をStringBufferに蓄積しています。同時に、検出された母音をgroup()メソッドで取り出して変数vowelsに連結しているため、最後に「母音を除いた文字列」と「取り除かれた母音の一覧」の両方を出力できます。

まとめ

文字クラス「[aeiouAEIOU]」とreplaceAll()メソッドを組み合わせれば、最小限のコードで母音を削除できます。削除対象の母音を保持しておきたい場合は、Pattern/MatcherクラスとappendReplacement()を活用するとよいでしょう。用途に応じて使い分けてみてください。

  1. JavaScriptで文字列から特定の文字を削除する方法|split()とjoin()を活用

    文字列から区切り文字を取り除く関数を作る JavaScriptでは、元の文字列と削除したい部分文字列(区切り文字)の2つの引数を受け取り、その区切り文字がすべて取り除かれた新しい文字列を返す関数 shedString() を簡単に実装できます。 たとえば、次のように呼び出した場合: shedString(12/23/2020, /); この関数は以下の結果を返します。 12232020 それでは、実際のコードを見ていきましょう。 実装例 ポイントは、split() で文字列を区切り文字ごとに分割し、その配列をjoin() で空文字を挟んで再結合するという流れです。 const shedStr

  2. AndroidでTextViewの文字列から母音をすべて削除する方法を解説

    AndroidアプリでTextViewに表示する文字列から母音を除去する手順 この記事では、Androidアプリにおいて、EditTextに入力された文字列から母音(A・E・I・O・U)をすべて取り除き、結果をTextViewに表示する方法を実例とともに解説します。正規表現を使ったシンプルな実装なので、初心者の方でもすぐに試せる内容です。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目をすべて入力してプロジェクトのセットアップを完了させてください。 ステップ2:レイア