像這種一對一的轉換, 有一種寫法如下:
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.
同樣道理, 也可替換為 "零壹貳參肆伍陸柒捌玖".
沒有留言:
張貼留言