close

轉載自:http://mobile.dotblogs.com.tw/yilinliu/archive/02/12/7136.aspx

有時在處理數字的顯示時,會有一種需求是希望將"第123期"轉為"第一二三期"
,或是將其轉為"第壹貳參期"。
像這種一對一的轉換,有一種寫法如下: 

string sInput = "045";
string strResult2 = sInput.Replace("0", "0").Replace("1", "一")
.Replace("2", "二").Replace("3", "三")
.Replace("4", "四").Replace("5", "五")
.Replace("6", "六").Replace("7", "七")
.Replace("8", "八").Replace("9", "九");

這樣的寫法看起來會有點麻煩,不過卻是最常被使用的做法。

若是用Regex做,看起來會簡潔一點:

string sInput = "045";
string strResult = Regex.Replace(sInput, ".",
delegate(Match m)
{
return "0一二三四五六七八九"[m.Value[0] - '0'].ToString();
});

第2行設定".",目的是要將sInput中所有的字元做取代。
如果字串中有其他的字元,保險一點可以設定為"[\\d]",也就是只抓數字(0-9)。
第5行是將找到的字串值(m.Value[0]),例如"0", "4", "5",做為"0一二三四五六七八九"這個字串的索引值,然後取出"0","四","五"。
在取索引值的部分,可以利用int.Parse(m.Value[0].ToString()),將m.Value[0]轉成數字。
也可以使用字元整數值的相減,將數字字元('0', '1', '2', etc)減去'0'(char=48),得到0, 1, 2, etc。

arrow
arrow
    全站熱搜

    winnercow 發表在 痞客邦 留言(0) 人氣()