主函數 ConvertSum 拆分為:整數部分 ConvertData、小數部分 ConvertXiaoShu、四位分組 ConvertDigit、具體位數轉換 Convert4Digit/Convert3Digit/Convert2Digit、單字轉換 ConvertChinese。
public string ConvertChinese(string digit)
{
switch (digit)
{
case "0": return "零";
case "1": return "壹";
case "2": return "貳";
case "3": return "叁";
case "4": return "肆";
case "5": return "伍";
case "6": return "陸";
case "7": return "柒";
case "8": return "捌";
case "9": return "玖";
default: return "";
}
}
public string Convert2Digit(string str) // str.Length == 2
{
string r = ConvertChinese(str[0].ToString()) + "拾" +
ConvertChinese(str[1].ToString());
return r.Replace("零拾", "零").Replace("零零", "零");
}
public string Convert3Digit(string str) // str.Length == 3
{
string r = ConvertChinese(str[0].ToString()) + "佰" +
ConvertChinese(str[1].ToString()) + "拾" +
ConvertChinese(str[2].ToString());
return r.Replace("零佰", "零").Replace("零拾", "零").Replace("零零", "零");
}
public string Convert4Digit(string str) // str.Length == 4
{
string r = ConvertChinese(str[0].ToString()) + "仟" +
ConvertChinese(str[1].ToString()) + "佰" +
ConvertChinese(str[2].ToString()) + "拾" +
ConvertChinese(str[3].ToString());
return r.Replace("零仟", "零").Replace("零佰", "零")
.Replace("零拾", "零").Replace("零零", "零");
}
public string ConvertDigit(string str) // 1~4 位
{
switch (str.Length)
{
case 1: return ConvertChinese(str);
case 2: return Convert2Digit(str);
case 3: return Convert3Digit(str);
case 4: return Convert4Digit(str);
default: return "";
}
}
Replace 清理多餘「零」,保證語法規範(如「壹佰零壹」而非「壹佰零零壹」)。