2007年11月11日

正規表現DE数値かチェック

String str = "22222233322";
String regex = "^[\\d]+$";
System.out.println("数字"+(str.matches(regex)?"です":"でない"));
posted by 台北猫々 at 00:21| Comment(0) | TrackBack(0) | 技術メモ(Java)

2007年11月10日

カレントディレクトリ取得

File f=new File(".").getAbsoluteFile().getParentFile();
String cwd = f.getAbsolutePath();
posted by 台北猫々 at 23:03| Comment(0) | TrackBack(0) | 技術メモ(Java)

2007年11月04日

正規表現による全角文字判定

UTF-16の全角文字のコード見てみると、あまりにもばらばらになっていて、正規表現ではSJISやEUCのような判定はできなそうと思っていたところ↓
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4871&forum=7
のページでありました。「半角文字以外だけで構成されているか」というやり方なのですね。

String str = "さにわらがな感じAAAAA●@「」:lp¥^0998";
String regex5 = "[^ -~。-゚]*";
System.out.println("全角以外が"+(str.matches(regex5)?"なし":"あり"));
posted by 台北猫々 at 00:20| Comment(0) | TrackBack(0) | 技術メモ(Java)

2007年11月03日

ひらがな判定

Javaでも正規表現で、ひらがな判定できるのかな?と思ってやってみました。試行錯誤の末できましたが、Stringの内部コードはUTF-16だったことをすっかり忘れていました。


String str = "さにわらがな";

//駄目!
String regex1 = "^(?:\\x30[\\x41-\\x93])+$";
System.out.println("ひらがな以外が"+(str.matches(regex1)?"なし":"あり"));

//駄目駄目!
String regex2 = "^(?:\\x82[\\x9F-\\xF1])+$";
System.out.println("ひらがな以外が"+(str.matches(regex2)?"なし":"あり"));

//駄目駄目駄目!
String regex3 = "^(?:\\xE3\\x81[\\x81-\\xBF]|\\xE3\\x82[\\x80-\\x93])+$";
System.out.println("ひらがな以外が"+(str.matches(regex3)?"なし":"あり"));

//成功!!!猫
String regex4 = "^(?:[\\u3041-\\u3093])+$";
System.out.println("ひらがな以外が"+(str.matches(regex4)?"なし":"あり"));
posted by 台北猫々 at 17:57| Comment(0) | TrackBack(0) | 技術メモ(Java)

2007年10月11日

Javaの正規表現を使った半角英数字チェック

String regex = "^[0-9a-zA-Z]+";
java.util.regex.Pattern p = java.util.regex.Pattern.compile(regex);
java.util.regex.Matcher m = p.matcher("11AA");
System.out.println("半角英数字以外が"+(m.matches()?"なし":"あり"));
posted by 台北猫々 at 22:00| Comment(0) | TrackBack(0) | 技術メモ(Java)

2007年10月09日

Scannerクラス

いつのまにか、こんな便利なクラスができていたのですね。
コマンド行から、データを受けとる。

Scanner scan = new Scanner(System.in);
String str = scan.next();

//標準入力デバイスはクローズしなくていいのですよね。
//C言語を考えると、自然かな。
//scan.close();
posted by 台北猫々 at 22:29| Comment(0) | TrackBack(0) | 技術メモ(Java)

2007年10月04日

数値8桁形式(YYYYMMDD)をDateクラスに変換して、別の表示形式にする方法

Date date1 = new SimpleDateFormat("yyyyMMdd").parse(String.valueOf(20071011));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(sdf.format(date1));

「2007/10/11」と表示されます。
posted by 台北猫々 at 22:03| Comment(0) | TrackBack(0) | 技術メモ(Java)