Javaで文字列が英数字かどうかを判定するプログラムの書き方
数字と英字(アルファベット)が組み合わさった文字列は「英数字(アルファナンメリック)」と呼ばれます。Javaでは、正規表現を使うことで、ある文字列が英数字のみで構成されているかどうかを簡単に判定できます。
数字と英字の組み合わせにマッチする正規表現は次のとおりです。
"^[a-zA-Z0-9]+$";
Stringクラスのmatches()メソッドは、引数として正規表現(文字列形式)を受け取り、現在の文字列と照合します。一致すればtrue、一致しなければfalseを返します。
したがって、特定の文字列が英数字かどうかを調べる手順は以下のようになります。
- 対象となる文字列を取得する。
- 上記の正規表現を引数に渡して、matches()メソッドを呼び出す。
- 返された結果(boolean値)を確認する。
例1:matches()メソッドを使った基本的な判定
import java.util.Scanner;
public class AlphanumericString {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter input string: ");
String input = sc.next();
String regex = "^[a-zA-Z0-9]+$";
boolean result = input.matches(regex);
if(result) {
System.out.println("Given string is alpha numeric");
} else {
System.out.println("Given string is not alpha numeric");
}
}
}実行結果
Enter input string: abc123* Given string is not alpha numeric
この例では、入力された文字列「abc123*」に記号「*」が含まれているため、「英数字ではない」と判定されています。
例2:java.util.regexパッケージを使った判定
正規表現をコンパイルして特定の文字列と照合するには、java.util.regexパッケージが提供するクラスやメソッド(API)を利用することもできます。Patternクラスで正規表現をコンパイルし、Matcherクラスで照合を行うことで、より柔軟な処理が可能です。
次のプログラムは、これらのAPIを使用して、入力された文字列を空白で分割し、各単語ごとに英数字かどうかを検証します。
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("Enter input string: ");
String input = sc.nextLine();
String regex = "^[a-zA-Z0-9]+$";
String data[] = input.split(" ");
//Patternオブジェクトの生成
Pattern pattern = Pattern.compile(regex);
for (String ele : data){
//Matcherオブジェクトの生成
Matcher matcher = pattern.matcher(ele);
if(matcher.matches()) {
System.out.println("The word "+ele+": is alpha numeric");
} else {
System.out.println("The word "+ele+": is not alpha numeric");
}
}
}
}実行結果
Enter input string: hello* this$ is sample text The word hello*: is not alpha numeric The word this$: is not alpha numeric The word is: is alpha numeric The word sample: is alpha numeric The word text: is alpha numeric
このように、記号を含む単語(hello*、this$)は「英数字ではない」と判定され、英字のみの単語(is、sample、text)は「英数字である」と判定されます。用途に応じて、シンプルなmatches()メソッドとjava.util.regexパッケージを使い分けるとよいでしょう。
-
Pythonで数値が2の累乗かどうかを判定するプログラム
この記事では、以下の問題に対する解決策について詳しく解説します。 問題文 ある整数が与えられたとき、その数が2の累乗であるかどうかを判定する必要があります。 この問題は、主に次の2つのアプローチで解くことができます。 アプローチ1: 繰り返し2で割って判定する 数値を順に2で割っていき、途中で割り切れなくなった場合(奇数が出現した場合)は2の累乗ではありません。最終的に1に到達できれば、その数は2の累乗であると判定できます。なお、0は2の累乗に含まれないため、あらかじめ除外しています。この方法の時間計算量は O(log n) です。 サンプルコード # power of 2 def find(
-
Pythonで文字列内のミラー文字を検索する方法【初心者向け解説】
ユーザーが入力した文字列と位置(ポジション)が与えられたとき、その位置から文字列の末尾までの文字を、アルファベット順を反転させた「ミラー文字」に変換するプログラムを作成します。この操作では、「a」→「z」、「b」→「y」、「c」→「x」、「d」→「w」のように、アルファベットの最初の文字が最後の文字に対応する形で置き換えを行います。 入力: p = 3 入力文字列 = python 出力: pygslm 上記の例では、3番目の位置以降の文字「t」「h」「o」「n」が、それぞれ逆順のアルファベット「g」「s」「l」「m」に変換されていることがわかります。先頭から指定位置までは元の文字列