TOPへ

使いそうなメソッド(JAVA)

たいてい、どこのプロジェクトでもあると思いますけど。
研修中とかの考え方の参考にどうぞ。
(多分、このままコピってもダメです)

ログとかは、開始位置、終了位置に、出力を設定する。
チェックメソッドでは、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;
}


※検索でいらした方への注意

当コーナーは、管理人の苦労により、一応作ってみた参考用です。
実はこのサイトはレビュー・紹介等を扱ったゲーム系サイトなので、二個以上戻ると、ゲームサイトへ出ます。
会社で就業中に調べている方は、くれぐれも二個以上戻らないように。

戻る