/*
 * Created on 2005-5-13
 * 利用正則表達式對數字進行判斷
 * 代碼來源自PIGO,有改動
 
*/

package org.waityou.utils;

import java.util.regex.*;

/**
 * 
@author Ace
 *     thanks, pigo
 *
 
*/

public class ValidationNumber {

    
private static Pattern intnumPattern;

    
private static Pattern numberPattern;

    
private static Pattern doublenumPattern;

    
public static boolean isintNumber(String aString) {
        
//      檢查一個字符串是否是整數 允許一個正負符號位

        
if (aString == null || aString.length() < 1{
            
return false;
        }


        
if (intnumPattern == null{
            intnumPattern 
= Pattern.compile("^[+-]?[\\d]+$");
        }


        
return intnumPattern.matcher(aString).find();
    }


    
public static boolean isNumber(String aString) {
        
//      檢查一個字符串是否全部是數字

        
if (aString == null || aString.length() < 1{
            
return false;
        }


        
if (numberPattern == null{
            numberPattern 
= Pattern.compile("^[\\d]+$");     //  "^[+-]?([\\d]+)|([\\d]+\\.[\\d]+)$"
        }


        
return numberPattern.matcher(aString).find();
    }


    
public static boolean isdoubleNumber(String aString) {
        
//檢查一個字符串是否是浮點小數,浮點小數至少一個數字開頭,允許一個正負符號位
        
//中間只出現一個小數點,小數點之后至少一個數字

        
if (aString == null || aString.length() < 1{
            
return false;
        }


        
if (doublenumPattern == null{
            doublenumPattern 
= Pattern.compile("^[+-]?[\\d]+\\.[\\d]+$");
        }

        
return doublenumPattern.matcher(aString).find();
    }


    
public static void main(String[] args) {
        
        
// 測試
        String intnum1 = "-23423";
        String intnum2 
= "234";
        String numstring 
= "234sdf";
        String num1 
= "234234";
        String doublenum1 
= "0.123456";
        String doublenum2 
= "-0.23";
        String doublenum3 
= ".123123";

        System.out.println(
"" + isintNumber(intnum1));
        System.out.println(
"" + isintNumber(intnum2));
        System.out.println(
"" + isintNumber(numstring));

        System.out.println(
"" + isNumber(num1));
        System.out.println(
"" + isNumber(numstring));

        System.out.println(
"" + isdoubleNumber(doublenum1));
        System.out.println(
"" + isdoubleNumber(doublenum2));
        System.out.println(
"" + isdoubleNumber(doublenum3));
        System.out.println(
"" + isdoubleNumber(numstring));
    }

}