2019年1月8日 星期二

[C#]數字轉字串,比對判斷不正確的處理方式

因為oracle存檔數字格式為0.00000
而user 在網頁上要看到的格式為 1,234.123456
要比對db與網頁上的資料不符者,
產出xml 依xml 資料回存被異動的資料至oracle ,但資料格式不相同

要處理
1.oracle 產出的數字 0.00000 顯示至網頁 textbox  為 1,234.25
2.網頁顯示 1,234.56 要回存DB為 1234.100000
3.輸出xml 為1234.100000

本來以是字串處理,但是db輸出的字串與 textbox 的字串比對,
顯示上都是一樣的,但C#判別為不相符。

後來改以數字處理比對即可
將存入的字數以  Response.Write (String.Format("{0:00000.0000}", 123.45)); 處理

數字轉字串之格式可參考 http://goodlucky.pixnet.net/blog/post/30233497-%5Bc%23%5D-string.format%E8%BC%B8%E5%87%BA%E6%A0%BC%E5%BC%8F

因為C#沒有IsNumeric 故使用正達式 來處理

/// <summary>
    /// 是否是有小數(不論正負)
    /// </summary>
    /// <param name="examine"></param>
    /// <returns></returns>
    public static bool IsFloat(string examine)
    {
        bool chk = false;
        if (!string.IsNullOrEmpty(examine))
        {
            Regex NumberPattern = new Regex(@"^(-[0-9]*|[0-9]*)$|^(-[0-9]*|[0-9]*)(\.{1}\d*)$");
            chk = NumberPattern.IsMatch(examine);
        }
        return chk;
    }

    public static bool IsInteger(string examine)
    {
        Regex NumberPattern = new Regex(@"^(-[0-9]*|[0-9]*)$");
        return NumberPattern.IsMatch(examine);
    }

    public static bool getRegex(string examine, string regex)
    {

        Regex NumberPattern = new Regex(regex);
        return NumberPattern.IsMatch(examine);
    }





沒有留言:

張貼留言