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

Javaで母音で始まる単語を抽出する方法を解説

文字列の中から「母音(a、e、i、o、u)で始まる単語」を抽出したいケースは、Javaのテキスト処理においてよくある課題の一つです。この記事では、Stringクラスの基本的なメソッドを組み合わせて、母音で始まる単語を効率的に取り出す手順を解説します。

抽出の基本的な流れ

  • split()メソッドで文字列を分割する: Stringクラスのsplit()メソッドを使い、対象の文字列をスペース区切りでString型の配列に変換します。

  • forループで各単語を走査する: 取得した配列の要素を一つずつ順番に処理していきます。

  • charAt()メソッドで先頭文字を取得する: 各単語の最初の1文字をcharAt(0)で取り出します。

  • if文で母音かどうかを判定する: 先頭文字がa、e、i、o、uのいずれかに一致する場合、その単語を出力します。

サンプルテキストファイル

ここでは、以下の内容が書かれたテキストファイル(sample.txt)を例にします。

Tutorials Point originated from the idea that there exists a class of readers who respond better to 
on-line content and prefer to learn new skills at their own pace from the comforts of their drawing rooms.

サンプルプログラム

次のJavaプログラムは、ファイルを読み込み、母音で始まるすべての単語を出力します。

import java.io.File;
import java.util.Scanner;
public class WordsStartWithVowel {
    public static String fileToString(String filePath) throws Exception {
        Scanner sc = new Scanner(new File(filePath));
        StringBuffer sb = new StringBuffer();
        String input = new String();
        while (sc.hasNextLine()) {
            input = sc.nextLine();
            sb.append(input);
        }
        return sb.toString();
    }
    public static void main(String args[]) throws Exception {
        String str = fileToString("D:\\sample.txt");
        String words[] = str.split(" ");
        for(int i = 0; i < words.length; i++) {
            char ch = words[i].charAt(0);
            if(ch == 'a'|| ch == 'e'|| ch == 'i' ||ch == 'o' ||ch == 'u') {
                System.out.println(words[i]);
            }
        }
    }
}

プログラムのポイント

  • fileToString()メソッド: Scannerクラスを使ってファイルを1行ずつ読み込み、StringBufferに連結して1つの文字列として返します。

  • 大文字・小文字の扱い: 上記のコードは小文字の母音のみ判定しています。大文字も含めたい場合は、Character.toLowerCase(ch)で先頭文字を小文字に変換してから比較するとよいでしょう。

  • 空文字への注意: 連続したスペースがあると空の要素が配列に含まれることがあります。charAt(0)を呼ぶ前にwords[i].isEmpty()でチェックしておくと安全です。

実行結果

originated
idea
exists
a
of
on-line
and
at
own
of

このように、split()とcharAt()を組み合わせるだけで、特別なライブラリを使わずに母音で始まる単語を簡単に抽出できます。正規表現を使ったsplit("\\s+")を採用すれば、タブや複数の空白にも対応でき、より堅牢な実装になります。

  1. JavaでNumberFormatException(非検査例外)を処理する方法をわかりやすく解説

    NumberFormatExceptionは、parseXXX()系のメソッドが文字列を数値に変換できなかった場合にスローされる非検査例外(unchecked exception)です。この例外はコンパイル時に強制されないため、開発者が適切に対処しないと実行時にプログラムが異常終了する原因となります。java.langパッケージのクラスには、NumberFormatExceptionをスローする可能性のあるメソッドやコンストラクタが多数存在します。代表的なものは以下の通りです。public static int parseInt(String s) throws NumberFormatExc

  2. 【Java】文字列(String)をintに変換する方法をサンプルコード付きで解説

    Javaで文字列(String)を数値(int)に変換したい場面は非常によくあります。文字列が数字のみで構成されている場合は、Integer.parseInt() または Integer.valueOf() を使うのが最も簡単かつ確実な方法です。 一方、文字列の中に数字と英字が混在している場合は、正規表現を使ってまず数字部分だけを取り出し、その結果得られた文字列をintに変換するという手順が必要になります。 ここで押さえておきたい重要なポイントがあります。parseInt(String) はプリミティブ型の int を返すのに対して、valueOf(String) は Integer オブジ