Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Javaにおける文字列の検証 | 文字列
Java入門

Javaにおける文字列の検証

メニューを表示するにはスワイプしてください

テキスト入力を扱う際、ユーザーが期待通りに入力してくれることはほとんどありません。入力欄を空のままにしたり、スペースだけを入力したり、必要な記号を忘れたりすることがあります。そのため、プログラムで文字列を使用する前に、まずバリデーション(検証)を行い、特定のルールに従っているかどうかを確認する必要があります。

これまでに isEmpty()length()contains() などの基本的なメソッドを見てきましたが、ここでは実際の入力バリデーションで特に役立ついくつかのメソッドを追加で紹介します。

isBlank()

文字列が技術的には空ではないものの、スペースだけが含まれているという問題は非常によくあります。たとえば、ユーザーが名前を「入力」したつもりでも、スペースキーだけを数回押した場合などです。.isBlank() は、このような空白のみの文字列を無効な入力として扱います。戻り値は boolean 型です。

Main.java

Main.java

123456789101112
package com.example; public class Main { public static void main(String[] args) { String customerName = " "; boolean isBlankName = customerName.isBlank(); System.out.println(isBlankName); } }

customerName は完全に空ではありませんが、スペースのみが含まれているため、.isBlank()true を返し、意味のある内容が存在しないことを示します。

startsWith()

文字列が特定の構造に従っているかを確認する必要がある場合があります。たとえば、システム内のすべての注文コードが "ORD" で始まる必要がある場合、.startsWith() は文字列の先頭をチェックし、boolean を返します。

Main.java

Main.java

123456789101112
package com.example; public class Main { public static void main(String[] args) { String orderCode = "ORD-2459"; boolean validOrderCode = orderCode.startsWith("ORD"); System.out.println(validOrderCode); } }

.startsWith("ORD") は、orderCode の最初の3文字をチェックします。これらが一致するため、true を返し、コードが期待される形式に従っていることを確認します。

endsWith()

文字列の末尾を検証することもできます。これは特にファイル名やフォーマットの確認に便利です。例えば、レシートファイルが実際にPDFであることを確認する場合などです。boolean を返します。

Main.java

Main.java

123456789101112
package com.example; public class Main { public static void main(String[] args) { String receiptFile = "receipt.pdf"; boolean validReceiptFile = receiptFile.endsWith(".pdf"); System.out.println(validReceiptFile); } }

.endsWith(".pdf") は、receiptFile の最後の4文字を確認します。これが ".pdf" と一致するため、true を返します。

複合バリデーション

実際のバリデーションは通常、1つのチェックだけでなく、複数のルールが組み合わさって行われます。例えば、ユーザー名のバリデーションでは、空白でないこと、5文字以上であること、スペースを含まないことが求められます:

Main.java

Main.java

123456789101112131415
package com.example; public class Main { public static void main(String[] args) { String username = "coffeeMaster"; boolean validUsername = !username.isBlank() && username.length() >= 5 && !username.contains(" "); System.out.println(validUsername); } }

3つの条件すべてが && で結合されており、ユーザー名はすべてのチェックを通過する必要があります。"coffeeMaster" は空白ではなく、5文字より多く、スペースも含まれていないため、validUsernametrue となります。

question mark

.isBlank() は何をチェックしますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

Javaにおける文字列の検証

テキスト入力を扱う際、ユーザーが期待通りに入力してくれることはほとんどありません。入力欄を空のままにしたり、スペースだけを入力したり、必要な記号を忘れたりすることがあります。そのため、プログラムで文字列を使用する前に、まずバリデーション(検証)を行い、特定のルールに従っているかどうかを確認する必要があります。

これまでに isEmpty()length()contains() などの基本的なメソッドを見てきましたが、ここでは実際の入力バリデーションで特に役立ついくつかのメソッドを追加で紹介します。

isBlank()

文字列が技術的には空ではないものの、スペースだけが含まれているという問題は非常によくあります。たとえば、ユーザーが名前を「入力」したつもりでも、スペースキーだけを数回押した場合などです。.isBlank() は、このような空白のみの文字列を無効な入力として扱います。戻り値は boolean 型です。

Main.java

Main.java

123456789101112
package com.example; public class Main { public static void main(String[] args) { String customerName = " "; boolean isBlankName = customerName.isBlank(); System.out.println(isBlankName); } }

customerName は完全に空ではありませんが、スペースのみが含まれているため、.isBlank()true を返し、意味のある内容が存在しないことを示します。

startsWith()

文字列が特定の構造に従っているかを確認する必要がある場合があります。たとえば、システム内のすべての注文コードが "ORD" で始まる必要がある場合、.startsWith() は文字列の先頭をチェックし、boolean を返します。

Main.java

Main.java

123456789101112
package com.example; public class Main { public static void main(String[] args) { String orderCode = "ORD-2459"; boolean validOrderCode = orderCode.startsWith("ORD"); System.out.println(validOrderCode); } }

.startsWith("ORD") は、orderCode の最初の3文字をチェックします。これらが一致するため、true を返し、コードが期待される形式に従っていることを確認します。

endsWith()

文字列の末尾を検証することもできます。これは特にファイル名やフォーマットの確認に便利です。例えば、レシートファイルが実際にPDFであることを確認する場合などです。boolean を返します。

Main.java

Main.java

123456789101112
package com.example; public class Main { public static void main(String[] args) { String receiptFile = "receipt.pdf"; boolean validReceiptFile = receiptFile.endsWith(".pdf"); System.out.println(validReceiptFile); } }

.endsWith(".pdf") は、receiptFile の最後の4文字を確認します。これが ".pdf" と一致するため、true を返します。

複合バリデーション

実際のバリデーションは通常、1つのチェックだけでなく、複数のルールが組み合わさって行われます。例えば、ユーザー名のバリデーションでは、空白でないこと、5文字以上であること、スペースを含まないことが求められます:

Main.java

Main.java

123456789101112131415
package com.example; public class Main { public static void main(String[] args) { String username = "coffeeMaster"; boolean validUsername = !username.isBlank() && username.length() >= 5 && !username.contains(" "); System.out.println(validUsername); } }

3つの条件すべてが && で結合されており、ユーザー名はすべてのチェックを通過する必要があります。"coffeeMaster" は空白ではなく、5文字より多く、スペースも含まれていないため、validUsernametrue となります。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  6
some-alt