-
Javaの正規表現を使って有効な携帯電話番号を検証するプログラム
Javaでは正規表現を利用することで、入力された携帯電話番号が有効かどうかを簡単にチェックできます。有効な携帯電話番号との一致を判定するには、次のような正規表現を使用します。\\d{10}正規表現のポイント有効な携帯電話番号は、一般的に10桁の数字で構成されます(インドの場合)。メタ文字 \d は、0から9までの任意の数字1文字にマッチします。量指定子 {n} は、直前の要素がちょうどn回繰り返されることを意味します。つまり \d{10} は「数字がちょうど10桁並んでいる」ことを表します。それでは、実際にJavaで携帯電話番号を検証するプログラムを2つの方法で見ていきましょう。例1:Patt
-
Javaの正規表現で有効なメールアドレスを検証する方法
入力された文字列が有効なメールアドレスかどうかを判定するには、以下の正規表現パターンと照合します。^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$正規表現の各要素の意味^:文字列の先頭に一致します。[a-zA-Z0-9+_.-]:「@」より前の部分で、英字(大文字・小文字)、数字、「+」「_」「.」「-」のいずれか1文字に一致します。+:直前の文字セットが1回以上繰り返されることを表します。@:「@」記号そのものに一致します。[a-zA-Z0-9.-]:「@」より後の部分で、英字(大文字・小文字)、数字、「.」「-」のいずれか1文字に一致します。$:文字列の末尾に一致します。
-
Javaの正規表現を使って各単語の頭文字を抽出する方法
Javaで文字列から各単語の最初の文字(頭文字)だけを取り出したい場合、正規表現を活用すると簡単に実現できます。この記事では、その具体的な手順とサンプルコードをわかりやすく解説します。 使用する正規表現の仕組み ポイントとなるのは、次の2つの要素です。 \b:単語の境界(ワードバウンダリ)にマッチするメタ文字 [a-zA-Z]:英字(大文字・小文字のいずれか)1文字にマッチする文字クラス これらを組み合わせた正規表現 \b[a-zA-Z] は、「各単語の境界の直後にある英字1文字」、つまり各単語の最初の文字にマッチします。 各単語の頭文字を取得する手順 Pattern クラスの comp
-
Javaの正規表現を使って文字列から各英単語を抽出する方法
Javaでテキスト処理を行う際、「文字列に含まれる単語だけを取り出したい」という場面はよくあります。そんなときに役立つのが正規表現です。正規表現 [a-zA-Z]+ は、「1文字以上の連続する英字(アルファベット)」にマッチするパターンです。このパターンを利用することで、入力文字列から各英単語を簡単に抽出できます。単語を抽出する手順パターンのコンパイル: Patternクラスのcompile()メソッドに正規表現 [a-zA-Z]+ を渡してコンパイルし、Patternオブジェクトを作成します。Matcherオブジェクトの取得: Patternクラスのmatcher()メソッドに、対象となる入
-
Javaの正規表現を使って文字列内の連続するスペースを1つのスペースに置き換える方法
Javaで文字列に含まれる複数の連続スペースを、1つのスペースにまとめて置き換えたい場面はよくあります。正規表現を使えば、この処理をシンプルかつ効率的に実装できます。正規表現「\s+」の意味正規表現のメタ文字 \s は、空白文字(半角スペース、タブなど)にマッチします。さらに、直後の + は「直前の要素が1回以上繰り返される」ことを意味します。したがって、\s+ という正規表現は、1つまたは複数の連続する空白文字すべてにマッチします。この正規表現で入力文字列をマッチングし、マッチした部分を単一のスペース「 」に置き換えることで、余分なスペースを整理できます。例1:Patternクラス
-
【Java】正規表現を使って文字列から数値を抽出する方法をわかりやすく解説
Javaで文字列に含まれる数値(数字の並び)を抽出したい場合、正規表現を使うのが最も簡単な方法です。文字列から数値にマッチさせるには、以下のいずれかの正規表現パターンを使用します。 \\d+ または ([0-9]+) 「\\d+」は1桁以上の連続した数字にマッチするパターンで、「([0-9]+)」は0〜9の数字が1回以上繰り返される部分にマッチします。どちらを使っても結果は同じになります。 抽出処理では、java.util.regexパッケージのPatternクラスとMatcherクラスを使用します。Patternクラスで正規表現をコンパイルし、Matcherクラスのfind()メソッドでマッ
-
Javaの正規表現で大文字・小文字を区別せずに文字列をマッチさせる方法
Javaで正規表現を使って文字列を検索する際、デフォルトでは大文字と小文字が厳密に区別されます。しかし、Patternクラスのcompile()メソッドにフラグを指定することで、大文字・小文字を区別せずにマッチさせることが可能です。Pattern.compile()メソッドのパラメータPatternクラスのcompile()メソッドは、次の2つの引数を受け取ります。正規表現を表す文字列値マッチングの動作を制御するPatternクラスの整数型フィールド(フラグ)CASE_INSENSITIVEフラグとはPattern.CASE_INSENSITIVEは、大文字と小文字の違いを無視して文字をマッチ
-
【Java】正規表現のメタ文字をリテラル文字として照合する方法(Pattern.LITERAL)
Patternクラスのcompile()メソッドとはJavaのPatternクラスが提供するcompile()メソッドは、次の2つの引数を受け取ります。正規表現を表す文字列値Patternクラスのフィールド(int型のフラグ値)LITERALフラグの役割Pattern.LITERALは、パターンをリテラル(文字通り)として解析するためのフラグです。このフラグを有効にすると、正規表現のメタ文字やエスケープシーケンスは特別な意味を持たなくなり、すべて通常の文字として扱われます。そのため、正規表現のメタ文字を普通の文字としてそのままマッチさせたい場合は、compile()メソッドの第2引数にこのフラ
-
【Java】文字列から非ASCII文字を削除する方法をわかりやすく解説
Posix文字クラス「\p{ASCII}」とはJavaの正規表現で利用できるPosix文字クラス \p{ASCII} は、ASCII文字に一致するパターンです。ここにメタ文字の ^(キャレット)を組み合わせると否定(negation)の意味になり、「ASCII以外の文字」に一致させることができます。つまり、次の正規表現はすべての非ASCII文字にマッチします。[^\\p{ASCII}]replaceAll()メソッドで非ASCII文字を除去するStringクラスの replaceAll() メソッドは、第1引数に正規表現、第2引数に置換後の文字列を受け取り、現在の文字列のうちパターンに一致した
-
Java正規表現のPOSIX文字クラス \p{Lower}とは?小文字マッチの基本と実装例
POSIX文字クラス \p{Lower} は、正規表現で小文字のアルファベット(a〜z)1文字にマッチさせるためのパターンです。Javaでは Pattern クラスと Matcher クラスを組み合わせて使うことで、「文字列がすべて小文字で構成されているか」の判定や「小文字がいくつ含まれているか」のカウントなど、さまざまなバリデーション処理に活用できます。例1:入力文字列がすべて小文字かどうかを判定する次のサンプルコードでは、正規表現 ^\p{Lower}+$(行頭から行末まで、すべて小文字アルファベット)を使用し、キーボードから入力された5つの文字列の中から、小文字のみで構成されている文字列
-
【Java正規表現】POSIX文字クラス \p{Upper} で大文字英字をマッチングする方法
POSIX文字クラス \p{Upper} は、大文字の英字(A〜Z)にマッチする正規表現パターンです。Javaの java.util.regex パッケージでは、Pattern クラスや Matcher クラスと組み合わせることで、「文字列がすべて大文字で構成されているかの検証」や「文字列に含まれる大文字の個数カウント」などを簡単に実装できます。 \p{Upper} の基本仕様 \p{Upper} は文字クラス [A-Z] とほぼ同等の働きをし、ASCII範囲の大文字アルファベット1文字にマッチします。Unicode全体を対象にしたい場合は \p{IsUppercase} や \p{Lu} を
-
【Java】正規表現で日付文字列(MM-dd-yyyy形式)を検証する方法
Javaでは、正規表現(Regex)を使うことで、文字列として与えられた日付が「MM-dd-yyyy」形式に合致しているかどうかを簡単に検証できます。この記事では、実際に使える正規表現パターンと、その具体的な実装方法を2つのサンプルコードで解説します。MM-dd-yyyy形式に対応する正規表現以下の正規表現は、「月/日/年」(例: 09/26/1989)という形式の日付にマッチします。^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$各部分の意味は次の通りです。月の部分:1[0-2] または 0[1-9] → 01〜12 のみ許可日の部分:3
-
Javaの抽象クラスとインターフェースの違いを徹底解説!使い分けのポイントも紹介
Javaにおいて抽象化(Abstraction)は、抽象クラス(Abstract Class)とインターフェース(Interface)の2つの仕組みによって実現されます。どちらも抽象メソッドを含み、その実装は子クラスや実装クラスに委ねられますが、それぞれ役割や特性が異なります。 本記事では、抽象クラスとインターフェースの主な違いを比較表でわかりやすく整理し、実際のコード例とあわせて解説します。 抽象クラスとインターフェースの主な違い No.項目抽象クラスインターフェース 1サポートされるメソッド抽象メソッドと具象メソッド(実装あり)の両方を持つことができます。基本的には抽象メソッドの
-
Javaの抽象クラスと具象クラスの違いを徹底解説!比較表とサンプルコード付き
Javaでは、オブジェクト指向プログラミングにおける抽象化(abstraction)を実現する手段として、抽象クラス(abstract class)とインターフェースが用意されています。抽象クラスとは、実装を持たない抽象メソッドを含むことができ、子クラスに対してメソッドの実装を強制する特殊なクラスのことです。 一方、具象クラス(concrete class)は、すべてのメソッドが実装された通常のクラスであり、直接インスタンス化して利用できます。本記事では、抽象クラスと具象クラスの主な違いを、比較表とサンプルコードを使ってわかりやすく解説します。 抽象クラスと具象クラスの違い(比較表) No
-
JavaのScannerクラスとBufferedReaderクラスの違いを徹底比較
Javaでは、キーボード入力やファイルなど外部システムからデータを読み込む際に、ScannerクラスとBufferedReaderクラスのどちらも利用できます。Scannerは、入力が文字列型やプリミティブ型であることがあらかじめ分かっている場合に主に使われるクラスです。一方、BufferedReaderは、文字ストリームからテキストを読み込む際にバッファリングを行うことで、効率的に文字を読み取るためのクラスです。 ここでは、ScannerクラスとBufferedReaderクラスの重要な違いを5つの観点から比較します。 番号項目ScannerクラスBufferedReaderクラス
-
Javaのコンストラクタとメソッドの違いとは?初心者向けに徹底解説
コンストラクタはオブジェクトを生成・初期化するために使われる特別なメソッドである一方、メソッドは特定の処理(ステートメント)を実行するために使われます。一見似ている両者ですが、役割や動作には明確な違いがあります。ここでは、コンストラクタとメソッドの重要な違いを7つの観点から表形式で整理して解説します。No.項目コンストラクタメソッド1目的オブジェクトの生成と初期化を行うために使用される。特定の処理やステートメントを実行するために使用される。2呼び出し方システムによって暗黙的に自動呼び出しされる。プログラムコードの中で明示的に呼び出す必要がある。3呼び出しタイミングnewキーワードでオブジェクト
-
Javaのクラスとインターフェースの違いを徹底解説!初心者にもわかる比較ガイド
Javaプログラミングにおいて、「クラス」と「インターフェース」はどちらもオブジェクト指向設計の中核を担う重要な概念です。しかし、両者の役割や使い方には明確な違いがあり、これを正しく理解することは、柔軟で保守性の高いコードを書くための第一歩となります。本記事では、クラスとインターフェースそれぞれの基本から、両者の具体的な違いまで、コード例を交えながらわかりやすく解説します。クラス(Class)とはクラスとは、個々のオブジェクトを生成するための「設計図(ブループリント)」です。クラスの中には、以下のような種類の変数を定義できます。ローカル変数:メソッド、コンストラクタ、ブロックの中で定義される変
-
Javaの静的メソッドと非静的メソッドの違いを徹底解説
Javaのメソッドとは、特定の操作を実行するためにひとまとめにされた一連のステートメントの集合です。たとえばSystem.out.println()メソッドを呼び出す際、システム内部では実際に複数のステートメントが順番に実行され、コンソールへメッセージが表示されています。 静的メソッド(Static Method)とは 静的メソッドは「クラスメソッド」とも呼ばれ、そのクラスのすべてのオブジェクト間で共有されるメソッドです。最大の特徴は、インスタンスを生成しなくてもクラス名を指定するだけで直接呼び出せる点にあります。 非静的メソッド(Non-Static Method)とは クラス内でstati
-
Javaにおける静的変数(static変数)と非静的変数(インスタンス変数)の違いを徹底解説
変数とは、プログラムが操作できる名前付きの記憶領域のことです。Javaの各変数には必ず特定の型が存在し、その型によって以下の要素が決まります。変数のメモリサイズとレイアウトそのメモリに格納できる値の範囲変数に対して適用できる演算の種類Javaの変数は大きく「静的変数(static変数)」と「非静的変数(インスタンス変数)」の2種類に分けられます。それぞれの特徴を見ていきましょう。静的変数(Static Variable)とは静的変数は「クラス変数」とも呼ばれ、クラスのすべてのオブジェクト(インスタンス)で共通して使われる変数です。インスタンスを生成しなくても、クラス名を指定することで直接アクセ
-
JavaのArrayListとLinkedListの違いとは?特徴と使い分けのポイントを解説
Javaにおいて、ArrayListとLinkedListはどちらもListインターフェースを実装した代表的なコレクションクラスです。両者とも非同期(スレッドセーフではない)であるという共通点がありますが、内部構造やパフォーマンス特性には大きな違いがあります。 ここでは、ArrayListとLinkedListの主な違いを表形式で整理して解説します。 ArrayListとLinkedListの主な違い 番号比較項目ArrayListLinkedList 1内部実装動的配列(Dynamic Array)を使って要素を格納します。双方向連結リスト(Doubly Linked List)を使