■実装の概要
入力した文字列に対して、以下のチェックを行う処理を実装する。
- 桁数が一致するか
ただし、桁数チェック対象外の実装もつくる。 - 指定された文字の形式(※)であるか
ただし、文字形式チェック対象外の実装もつくる。
(※)文字形式の種別は以下の通りとする。
- 数字のみ(0〜9)
- 小文字のみ(a〜z)
- 大文字のみ(A〜Z)
- 数字・小文字のみ(必ず両方含む)
- 数字・大文字のみ(必ず両方含む)
- 小文字・大文字のみ(必ず両方含む)
- 数字・小文字・大文字のみ(必ず3種類含む)
■フローチャート
文字の桁数および形式チェックに関するutil処理のフローを以下に示す。
■サンプルコード
実装する処理のサンプルコードを以下に示す。
・ValidateLengthTypeUtil.java
package util;
import constant.CharTypeEnum;
public class ValidateLengthTypeUtil {
public static boolean isValidateLengthType(String target, int length, CharTypeEnum charType) {
if (target.isEmpty()) {
System.out.println("チェック文字列:なし");
return false;
}
// lengthに0を指定した場合は長さ判定を実施しない
if (length != 0) {
if (!isLength(target, length)) {
return false;
}
}
// FREE_TYPEの場合は文字タイプ判定を実施しない
if (CharTypeEnum.FREE_TYPE != charType) {
if (!isType(target, charType)) {
return false;
}
}
return true;
}
private static boolean isLength(String target, int length) {
if (target.length() != length) {
System.out.println(
"[文字長さエラー]target.length(): " + target.length() + " |length: " + length);
return false;
}
return true;
}
private static boolean isType(String target, CharTypeEnum charType) {
if (!target.matches(charType.getPattern())) {
System.out.println(
"[文字タイプエラー]target: " + target + " |type: " + charType);
return false;
}
return true;
}
}
・CharTypeEnum.java
package constant;
public enum CharTypeEnum {
ONLY_DIGITS("^[0-9]+$"),
ONLY_LOWERCASE("^[a-z]+$"),
ONLY_UPPERCASE("^[A-Z]+$"),
ONLY_DIGITS_LOWERCASE("^[0-9a-z]+$"),
ONLY_DIGITS_UPPERCASE("^[0-9A-Z]+$"),
ONLY_LOWERCASE_UPPERCASE("^[a-zA-Z]+$"),
ONLY_DIGITS_LOWERCASE_UPPERCASE("^[0-9a-zA-Z]+$"),
FREE_TYPE("");
private final String pattern;
// コンストラクタ
CharTypeEnum(String pattern) {
this.pattern = pattern;
}
// ゲッター
public String getPattern() {
return pattern;
}
}
・ValidateLengthTypeMain.java
import static util.ValidateLengthTypeUtil.isValidateLengthType;
import constant.CharTypeEnum;
public class ValidateLengthTypeMain {
public static void main(String[] args) {
String onlyDigitsTrue = "12398";
String onlyLowerCaseTrue = "abcdxyz";
String onlyUpperCaseTrue = "EGDYSHKF";
String onlyDigitsLowerCaseTrue = "1a2s3d";
String onlyDigitsUpperCaseTrue = "F4G5H6JKL";
String onlyLowerUpperCaseTrue = "eFb";
String onlyDigitsLowerUpperCaseTrue = "7iB8oN9pM0";
String lengthFalse = "q2F";
String typeFalse = "@]la";
String emptyFalse = "";
String freeLengthTypeTrue = "sdizhfsiuefhsoiefj]odsifj-3549[][@:";
// 数字のみ(OK)
System.out.println(
"onlyDigitsTrue: " + onlyDigitsTrue + ": " +
isValidateLengthType(onlyDigitsTrue, 5, CharTypeEnum.ONLY_DIGITS));
System.out.println("====================");
// 小文字のみ(OK)
System.out.println(
"onlyLowerCaseTrue: " + onlyLowerCaseTrue + ": " +
isValidateLengthType(onlyLowerCaseTrue, 7, CharTypeEnum.ONLY_LOWERCASE));
System.out.println("====================");
// 大文字のみ(OK)
System.out.println(
"onlyUpperCaseTrue: " + onlyUpperCaseTrue + ": " +
isValidateLengthType(onlyUpperCaseTrue, 8, CharTypeEnum.ONLY_UPPERCASE));
System.out.println("====================");
// 数字・小文字のみ(OK)
System.out.println(
"onlyDigitsLowerCaseTrue: " + onlyDigitsLowerCaseTrue + ": " +
isValidateLengthType(onlyDigitsLowerCaseTrue, 6, CharTypeEnum.ONLY_DIGITS_LOWERCASE));
System.out.println("====================");
// 数字・大文字のみ(OK)
System.out.println(
"onlyDigitsUpperCaseTrue: " + onlyDigitsUpperCaseTrue + ": " +
isValidateLengthType(onlyDigitsUpperCaseTrue, 9, CharTypeEnum.ONLY_DIGITS_UPPERCASE));
System.out.println("====================");
// 小文字・大文字のみ(OK)
System.out.println(
"onlyLowerUpperCaseTrue: " + onlyLowerUpperCaseTrue + ": " +
isValidateLengthType(onlyLowerUpperCaseTrue, 3,
CharTypeEnum.ONLY_LOWERCASE_UPPERCASE));
System.out.println("====================");
// 数字・小文字・大文字のみ(OK)
System.out.println(
"onlyDigitsLowerUpperCaseTrue: " + onlyDigitsLowerUpperCaseTrue + ": " +
isValidateLengthType(onlyDigitsLowerUpperCaseTrue, 10,
CharTypeEnum.ONLY_DIGITS_LOWERCASE_UPPERCASE));
System.out.println("====================");
// 長さチェック(NG)
System.out.println(
"lengthFalse: " + lengthFalse + ": " +
isValidateLengthType(lengthFalse, 99,
CharTypeEnum.ONLY_DIGITS_LOWERCASE_UPPERCASE));
System.out.println("====================");
// タイプチェック(NG)
System.out.println(
"typeFalse: " + typeFalse + ": " +
isValidateLengthType(typeFalse, 4,
CharTypeEnum.ONLY_DIGITS_LOWERCASE_UPPERCASE));
System.out.println("====================");
// チェック文字列なし(NG)
System.out.println(
"emptyFalse: " + emptyFalse + ": " +
isValidateLengthType(emptyFalse, 12,
CharTypeEnum.ONLY_DIGITS));
System.out.println("====================");
// 文字長さ・タイプチェックなし(OK)
System.out.println(
"freeLengthTypeTrue: " + freeLengthTypeTrue + ": " +
isValidateLengthType(freeLengthTypeTrue, 0,
CharTypeEnum.FREE_TYPE));
}
}
■実行結果
ValidateLengthTypeMainの実行結果を以下に示す。
onlyDigitsTrue: 12398: true
====================
onlyLowerCaseTrue: abcdxyz: true
====================
onlyUpperCaseTrue: EGDYSHKF: true
====================
onlyDigitsLowerCaseTrue: 1a2s3d: true
====================
onlyDigitsUpperCaseTrue: F4G5H6JKL: true
====================
onlyLowerUpperCaseTrue: eFb: true
====================
onlyDigitsLowerUpperCaseTrue: 7iB8oN9pM0: true
====================
[文字長さエラー]target.length(): 3 |length: 99
lengthFalse: q2F: false
====================
[文字タイプエラー]target: @]la |type: ONLY_DIGITS_LOWERCASE_UPPERCASE
typeFalse: @]la: false
====================
チェック文字列:なし
emptyFalse: : false
====================
freeLengthTypeTrue: sdizhfsiuefhsoiefj]odsifj-3549[][@:: true
コメント