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

Javaで正規表現を使って各単語の頭文字を抽出・出力する方法


この記事では、正規表現(regex)を使用して、文字列内の各単語の最初の文字(頭文字)を抽出し、出力する方法について詳しく解説します。正規表現とは、検索パターンを形成する文字列のシーケンスのことで、単一の文字から、より複雑なパターンまで柔軟に定義できます。

正規表現を利用すると、パターンに含まれる特殊な構文をもとに、対象となる文字列や文字列の集合とのマッチングや検索が可能になります。テキストやデータの検索・編集・加工など、さまざまな場面で活用される強力な仕組みです。

以下に具体的な例を示します。

入力値

Input String_1: Java Program
Input String_2: Joy of learning

期待される出力

Result_1: JP
Result_2: Jol

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 文字列変数 input_string_1 と input_string_2 を宣言する。さらに、正規表現パターン string_pattern(Pattern型)と Matcherオブジェクト string_matcher を宣言する。
ステップ3 - 変数に値を設定する。
ステップ4 - whileループ内で string_matcher.group() を呼び出し、各単語の最初の文字を取得する。
ステップ5 - 結果を表示する。
ステップ6 - 処理を終了する。

例1:mainメソッドにまとめて記述する場合

ここでは、すべての処理を「main」メソッド内に直接記述しています。正規表現パターンとして \\b[a-zA-Z] を使用することで、単語の境界(\\b)に続く英字1文字、つまり各単語の頭文字だけをマッチングできます。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex {
    public static void main(String[] args) {
        System.out.println("Required packages have been imported");
        String input_string_1 = "Java Program";
        System.out.println("\nThe first string is defined as: " +input_string_1);
        Pattern string_pattern = Pattern.compile("\\b[a-zA-Z]");
        Matcher string_matcher = string_pattern.matcher(input_string_1);
        System.out.println("The first letters of the string is : ");
        while (string_matcher.find())
            System.out.print(string_matcher.group());
        System.out.println();
        String input_string_2 = "Joy of learning";
        System.out.println("\nThe second string is defined as: " +input_string_2);
        Matcher string_matcher_2 = string_pattern.matcher(input_string_2);
        System.out.println("The first letters of the string is : ");
        while (string_matcher_2.find())
            System.out.print(string_matcher_2.group());
        System.out.println();
    }
}

出力

Required packages have been imported

The first string is defined as: Java Program
The first letters of the string is :
JP

The second string is defined as: Joy of learning
The first letters of the string is :
Jol

例2:オブジェクト指向スタイルで関数化する場合

ここでは、頭文字の抽出処理を独立したメソッドとしてカプセル化し、オブジェクト指向プログラミングの考え方に沿って実装しています。これにより、同じ処理を複数の文字列に対して簡単に再利用できるようになります。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex {
    static void print_regex_string(String s) {
        Pattern string_pattern = Pattern.compile("\\b[a-zA-Z]");
        Matcher string_matcher = string_pattern.matcher(s);
        System.out.println("The first letters of the string is : ");
        while (string_matcher.find())
            System.out.print(string_matcher.group());
        System.out.println();
    }
    public static void main(String[] args) {
        System.out.println("Required packages have been imported");
        String input_string_1 = "Java Program";
        System.out.println("\nThe first string is defined as: " +input_string_1);
        print_regex_string(input_string_1);
        String input_string_2 = "Joy of learning";
        System.out.println("\nThe second string is defined as: " +input_string_2);
        print_regex_string(input_string_2);
    }
}

出力

Required packages have been imported

The first string is defined as: Java Program
The first letters of the string is :
JP

The second string is defined as: Joy of learning
The first letters of the string is :
Jol

  1. 【Java入門】文字列から各単語の最初の文字だけを抽出して出力する方法

    JavaにおけるStringクラスは、文字列を表すために使用されるクラスです。Javaプログラム内に記述されたすべての文字列リテラルは、Stringクラスのインスタンスとして扱われます。また、Stringオブジェクトは定数であり、一度生成するとその値を後から変更することができません。この性質は「不変(イミュータブル)」と呼ばれます。 文字列の中から各単語の最初の文字だけを取り出して出力したい場合は、以下のようなプログラムで実現できます。 サンプルコード public class FirstCharacterPrintTest { public static void main(Stri

  2. Pythonで各単語の先頭文字を大文字に変換するプログラム

    英語の小文字だけで構成された文が与えられたとき、各単語の最初の文字だけを大文字に変換する方法を解説します。 たとえば、入力が s = i love my country の場合、出力は I Love My Country となります。 解決の手順 この問題は、以下のステップで解くことができます。 文字列 s を空白で分割し、単語のリストを作成する 結果を格納するための空のリストを用意する 各単語に対して capitalize() 関数を使って先頭文字を大文字化し、リストに追加する リスト内のすべての単語を空白区切りで連結して返す 実装例 実際のコードを見てみましょう。 def solv