如何在ASP.NET Core 6 MVC中将卢比金额以英文单词形式显示?
在ASP.NET Core 6 MVC中将卢比金额转换为英文单词形式的实现方法
核心思路
通过创建C#工具类实现数字到英文单词的转换逻辑,之后在MVC的控制器或视图中调用该工具类,即可将卢比金额(整数或带小数的金额)转换为对应的英文单词形式。
1. 创建数字转英文单词的工具类
在项目中新建Helpers文件夹,添加NumberToWordsConverter.cs类,实现核心转换逻辑:
public static class NumberToWordsConverter { private static readonly string[] Ones = { "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; private static readonly string[] Tens = { "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; // 处理整数金额转换 public static string ConvertToWords(int number) { if (number == 0) return "zero"; if (number < 0) return "minus " + ConvertToWords(Math.Abs(number)); string words = ""; // 适配印度计数系统(crore、lakh) if ((number / 10000000) > 0) { words += ConvertToWords(number / 10000000) + " crore "; number %= 10000000; } if ((number / 100000) > 0) { words += ConvertToWords(number / 100000) + " lakh "; number %= 100000; } if ((number / 1000) > 0) { words += ConvertToWords(number / 1000) + " thousand "; number %= 1000; } if ((number / 100) > 0) { words += ConvertToWords(number / 100) + " hundred "; number %= 100; } if (number > 0) { if (words != "") words += "and "; if (number < 20) words += Ones[number]; else { words += Tens[number / 10]; if ((number % 10) > 0) words += "-" + Ones[number % 10]; } } return words.Trim(); } // 处理带小数的卢比金额(如1000.50) public static string ConvertCurrencyToWords(decimal amount) { int integerPart = (int)Math.Floor(amount); int decimalPart = (int)Math.Round((amount - integerPart) * 100); string words = ConvertToWords(integerPart) + " rupees"; if (decimalPart > 0) words += " and " + ConvertToWords(decimalPart) + " paise"; return words; } }
注:代码默认适配印度计数体系(crore、lakh),如果需要通用国际计数逻辑(million、billion),可替换对应计数单位的判断代码。
2. 在ASP.NET Core 6 MVC中使用工具类
方式一:控制器处理后传递到视图
在控制器Action中调用工具类,将转换结果传给视图:
public IActionResult Index() { int amount = 1000; string amountInWords = NumberToWordsConverter.ConvertToWords(amount); // 带小数场景示例:decimal amount = 1234.50m; string amountInWords = NumberToWordsConverter.ConvertCurrencyToWords(amount); ViewBag.AmountInWords = amountInWords; return View(); }
在Index.cshtml视图中展示结果:
<p>金额1000对应的英文单词:@ViewBag.AmountInWords</p>
方式二:直接在视图中调用工具类
在视图中直接引用工具类并调用方法:
@using YourProjectNamespace.Helpers @{ int amount = 1000; string words = NumberToWordsConverter.ConvertToWords(amount); } <p>转换结果:@words</p>
示例效果
- 输入
1000→ 输出one thousand - 输入
12345→ 输出twelve thousand three hundred and forty-five - 输入
100000→ 输出one lakh(印度计数逻辑)或one hundred thousand(国际计数逻辑)
内容的提问来源于stack exchange,提问作者Rohith Ramesh
相关产品推荐
相关产品推荐

