像這種一對一的轉換, 有一種寫法如下:
1 2 3 4 5 6 | 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 做, 看起來會簡潔一點:
1 2 3 4 5 6 | string sInput = "045" ; string strResult = Regex.Replace(sInput, "." , delegate (Match m) { return "0一二三四五六七八九" [m.Value[0] - '0' ].ToString(); }); |
如果字串中有其他的字元, 保險一點可以設定為 "[\\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.
同樣道理, 也可替換為 "零壹貳參肆伍陸柒捌玖".
沒有留言:
張貼留言