| /*************************************************************************** |
| |
| Copyright (c) Microsoft Corporation 2012-2015. |
| |
| This code is licensed using the Microsoft Public License (Ms-PL). The text of the license can be found here: |
| |
| http://www.microsoft.com/resources/sharedsource/licensingbasics/publiclicense.mspx |
| |
| Published at http://OpenXmlDeveloper.org |
| Resource Center and Documentation: http://openxmldeveloper.org/wiki/w/wiki/powertools-for-open-xml.aspx |
| |
| Developer: Eric White |
| Blog: http://www.ericwhite.com |
| Twitter: @EricWhiteDev |
| Email: eric@ericwhite.com |
| |
| ***************************************************************************/ |
| |
| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Text; |
| |
| namespace OpenXmlPowerTools |
| { |
| public class ListItemTextGetter_zh_CN |
| { |
| public static string GetListItemText(string languageCultureName, int levelNumber, string numFmt) |
| { |
| string[] ccTDigitCharacters = new[] { |
| "", |
| "一", |
| "二", |
| "三", |
| "四", |
| "五", |
| "六", |
| "七", |
| "八", |
| "九", |
| }; |
| string tenCharacter = "十"; |
| string hundredCharacter = "百"; |
| string thousandCharacter = "千"; |
| string andCharacter = "〇"; |
| |
| string[] ccDigitCharacters = new[] { |
| "○", |
| "一", |
| "二", |
| "三", |
| "四", |
| "五", |
| "六", |
| "七", |
| "八", |
| "九", |
| }; |
| |
| int thousandsRemainder = levelNumber % 1000; |
| int hundredsRemainder = levelNumber % 100; |
| int thousands = levelNumber / 1000; |
| int hundreds = (levelNumber % 1000) / 100; |
| int tens = (levelNumber % 100) / 10; |
| int ones = levelNumber % 10; |
| |
| if (numFmt == "chineseCounting") |
| { |
| if (levelNumber >= 1 && levelNumber <= 9) |
| return ccDigitCharacters[levelNumber]; |
| if (levelNumber >= 10 && levelNumber <= 19) |
| { |
| if (levelNumber == 10) |
| return tenCharacter; |
| return tenCharacter + ccDigitCharacters[ones]; |
| } |
| if (levelNumber >= 11 && levelNumber <= 99) |
| { |
| if (ones == 0) |
| return ccDigitCharacters[tens] + tenCharacter; |
| return ccDigitCharacters[tens] + tenCharacter + ccDigitCharacters[ones]; |
| } |
| if (levelNumber >= 100 && levelNumber <= 999) |
| return ccDigitCharacters[hundreds] + ccDigitCharacters[tens] + ccDigitCharacters[ones]; |
| if (levelNumber >= 1000 && levelNumber <= 9999) |
| return ccDigitCharacters[thousands] + ccDigitCharacters[hundreds] + ccDigitCharacters[tens] + ccDigitCharacters[ones]; |
| return levelNumber.ToString(); |
| } |
| if (numFmt == "chineseCountingThousand") |
| { |
| if (levelNumber >= 1 && levelNumber <= 9) |
| return ccTDigitCharacters[levelNumber]; |
| if (levelNumber >= 10 && levelNumber <= 19) |
| return tenCharacter + ccTDigitCharacters[ones]; |
| if (levelNumber >= 20 && levelNumber <= 99) |
| return ccTDigitCharacters[tens] + tenCharacter + ccTDigitCharacters[ones]; |
| if (levelNumber >= 100 && levelNumber <= 999) |
| { |
| if (hundredsRemainder == 0) |
| return ccTDigitCharacters[hundreds] + hundredCharacter; |
| if (hundredsRemainder >= 1 && hundredsRemainder <= 9) |
| return ccTDigitCharacters[hundreds] + hundredCharacter + andCharacter + ccTDigitCharacters[levelNumber % 10]; |
| if (ones == 0) |
| return ccTDigitCharacters[hundreds] + hundredCharacter + ccTDigitCharacters[tens] + tenCharacter; |
| return ccTDigitCharacters[hundreds] + hundredCharacter + ccTDigitCharacters[tens] + tenCharacter + ccTDigitCharacters[ones]; |
| } |
| if (levelNumber >= 1000 && levelNumber <= 9999) |
| { |
| if (thousandsRemainder == 0) |
| return ccTDigitCharacters[thousands] + thousandCharacter; |
| if (thousandsRemainder >= 1 && thousandsRemainder <= 9) |
| return ccTDigitCharacters[thousands] + thousandCharacter + andCharacter + GetListItemText("zh_CN", thousandsRemainder, numFmt); |
| if (thousandsRemainder >= 10 && thousandsRemainder <= 99) |
| return ccTDigitCharacters[thousands] + thousandCharacter + andCharacter + ccTDigitCharacters[tens] + tenCharacter + ccTDigitCharacters[ones]; |
| if (hundredsRemainder == 0) |
| return ccTDigitCharacters[thousands] + thousandCharacter + ccTDigitCharacters[hundreds] + hundredCharacter; |
| if (hundredsRemainder >= 1 && hundredsRemainder <= 9) |
| return ccTDigitCharacters[thousands] + thousandCharacter + ccTDigitCharacters[hundreds] + hundredCharacter + andCharacter + ccTDigitCharacters[ones]; |
| return ccTDigitCharacters[thousands] + thousandCharacter + ccTDigitCharacters[hundreds] + hundredCharacter + ccTDigitCharacters[tens] + tenCharacter + ccTDigitCharacters[ones]; |
| } |
| return levelNumber.ToString(); |
| } |
| if (numFmt == "ideographTraditional") |
| { |
| string[] iDigitCharacters = new[] { |
| " ", |
| "甲", |
| "乙", |
| "丙", |
| "丁", |
| "戊", |
| "己", |
| "庚", |
| "辛", |
| "壬", |
| "癸", |
| }; |
| if (levelNumber >= 1 && levelNumber <= 10) |
| return iDigitCharacters[levelNumber]; |
| return levelNumber.ToString(); |
| } |
| return null; |
| } |
| } |
| } |