たいてい、どこのプロジェクトでもあると思いますけど。
研修中とかの考え方の参考にどうぞ。
(多分、このままコピってもダメです)
ログとかは、開始位置、終了位置に、出力を設定する。
チェックメソッドでは、falseの時に、メッセージを設定すれば、どの条件でエラーとなったのか分かる。
1.文字列除去
// 呼び元
String str = deleteString("ABCDE", "BC");
(str = "ADE")
/**
* 指定の文字列を除去する。
* @param sString 編集文字列
* @param sDelete 削除文字列
* @return 除去した文字列
*
*/
public static final String deleteString(String sString, String sDelete) {
String sResult; // 結果文字列
sResult = "";
if (sString == null || sDelete == null) {
return sString;
}
StringTokenizer st = new StringTokenizer(sString, sDelete);
while (st.hasMoreTokens()) {
sResult += st.nextToken();
}
return sResult;
}
|
2.ファイル名の整合性チェック
// 入力チェック呼び元
isOK = checkFileName(sFileName);
if (!isOK) {
break;
}
/**
* ファイル名の妥当性チェック
*
* @param sFileName ファイル名
* @return 結果(true:正常/false:異常)
* @throws 適当Exception
*
*/
private boolean checkFileName (String sFileName) throws 適当Exception {
boolean status = true;
String sFileType = "";
// ファイル名が空白でないか
if ( (null == sFileName) || ("".equals(sFileName.trim())) ) {
status = false;
}
//ファイルの拡張子(この場合はcsv)
if (status) {
sFileType = sFileName.substring(sFileName.length() - 3);
sFileType = sFileType.toLowerCase();
if ( !"csv".equals(sFileType) ) {
status = false;
}
return status;
}
|
3.桁数チェック
// 入力チェック呼び元
chkNum((String)rule,13, "画面ID",1);
/**
* 桁数チェック。
*
* 指定した桁数である。
*
* @param sData チェック対象データ
* @param slen 桁数
* @param sItemName チェック項目名
* @param nCheck 必須チェックフラグ(0=必須でない/1=必須)
* @return 結果(エラーなし:true/エラーあり:false)
* @throws 適当Exception
*/
private boolean chkNum(String sData, int len, String sItemName, int nCheck) throws 適当Exception {
boolean result = true;
try {
do {
if ("".equals(sData)) {
//必須の場合のみエラー
if ( nCheck == 1 ) {
result = false;
メッセージ等.add(sItemName + "がありません");
}
break;
}
if (len != sData.length()) {
// 桁数エラー
メッセージ等.add(sItemName + "は" + len + "桁で入力。");
result = false;
break;
}
}
while (false);
}catch (Exception e) {
// 例外
メッセージ等.add(sItemName + "に例外");
return false;
}
return result;
}
|
4.日付チェック
// 入力チェック呼び元
cFromResult = chkDay(sFromData, sFromName, 0);
/**
* 日付のチェック(YYYYMMDD)。
*
* 日付が正当である。
*
* @param sData 日付
* @param sItemName チェック項目名
* @param nCheck 必須チェックフラグ(0=必須でない/1=必須)
* @return 結果(エラーなし:true/エラーあり:false)
* @throws 適当Exception
*/
private boolean chkDay(String sData, String sItemName, int nCheck) throws 適当Exception {
boolean result = true;
int iYear;
int iMonth;
int iDay;
try {
if ("".equals(sData)) {
//必須の場合のみエラー
if ( nCheck == 1 ) {
メッセージ等.add(sItemName + "がありません");
return false;
}
}
if (8 != sData.length()) {
// 桁数エラー
メッセージ等.add(sItemName + "は8桁。");
return false;
}
iYear = Integer.parseInt(sDate.substring(0, 4));
iMonth = Integer.parseInt(sDate.substring(4, 6)) - 1;
iDay = Integer.parseInt(sDate.substring(6));
Calendar instCalendar = Calendar.getInstance();
instCalendar.setLenient(false);
instCalendar.set(iYear, iMonth, iDay);
instCalendar.get(instCalendar.YEAR);
result = true;
}
}catch (Exception e) {
// 例外
メッセージ等.add(sItemName + "は不正な日付。");
result = false;
}
return result;
}
|
5.文字種チェック
段々面倒になってきたので、エラーとか簡略化。
この系統は、普通ありますしね。
正規表現タイプ
[]:文字クラス
ハイフン(-):文字の範囲を指定
キャレット(^):文字集合の否定
例
[^0-9]:0から9までの数字以外の文字
[あ-そ]:ひらがなの"あ"から"そ"までの文字
/**
* 半角数字チェック。
* @param str 文字列
* @return 結果(すべて半角数字:true/それ以外:false)
*/
public static boolean isHalfNum(String str) {
if (str == null || !str.matches("^[0-9]+$")) {
// 半角数字正規表現に一致しない場合、エラー
return false;
}
return true;
}
|
一文字ずつ、チェックしていくタイプ。
文字コードの範囲で見る。
/**
* 半角カナチェック。
* @param str 文字列
* 。「」、・ア−ン ゜など、いわゆる半角カナ
* @return 結果(半角カナがあれば:true/ない:false)
*/
public static boolean HalfKatakana(String str) {
for (int i = str.length() - 1; i >= 0; i--) {
char c = str.charAt(i);
if ('。' <= c && c <= '゚'){
return true;
}
}
return false;
}
|
※検索でいらした方への注意
当コーナーは、管理人の苦労により、一応作ってみた参考用です。
実はこのサイトはレビュー・紹介等を扱ったゲーム系サイトなので、二個以上戻ると、ゲームサイトへ出ます。
会社で就業中に調べている方は、くれぐれも二個以上戻らないように。
|