当前位置: 首页 > news >正文

【C#】将数字转换为中文,如123转换为一百二十三

一、数字转换为中文数字

今天项目中遇到一个问题,就是数字转换为中文数字显示,这其中有很多麻烦的地方处理,比如100会显示为一百,而不是一百零;1001会显示为一千零一,而不是一千零零一;150会显示为一百五,而不是一百五十或者一百五零,等等问题,真是感叹中文数字叫法的多种多样,中华文化的博大精深。

二、代码

话不多说,直接上代码,直接写了一个静态类,传入数字就可以了

using System.Collections.Generic;


public static class NumberConverter
{
    public static string NumberToChinese(int number)
    {
        if (number == 0) return "零";

        string[] digits = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
        List<string> result = new List<string>();
        int unit = 1;
        int currentNumber = number;
        bool hasNonZero = false;

        while (currentNumber > 0)
        {
            int digit = currentNumber % 10;
            currentNumber /= 10;

            if (digit == 0)
            {
                // 处理零的情况(非末尾且前面有非零数字时添加)
                if (currentNumber > 0 && hasNonZero && (result.Count == 0 || result[^1] != "零"))
                {
                    result.Add(digits[digit]);
                }
            }
            else
            {
                // 处理单位(十位为1且非末尾时添加"一十")
                string unitStr = unit switch
                {
                    10 when digit == 1 && currentNumber > 0 => "十",
                    _ => GetUnit(unit)
                };
                result.Add($"{digits[digit]}{unitStr}");
                hasNonZero = true;
            }

            unit *= 10;
        }

        // 反转并清理末尾零
        result.Reverse();
        while (result.Count > 0 && result[^1] == "零")
        {
            result.RemoveAt(result.Count - 1);
        }

        return string.Join("", result);
    }

    private static string GetUnit(int unit)
    {
        return unit switch
        {
            1 => "",
            10 => "十",
            100 => "百",
            1000 => "千",
            _ => ""
        };
    }
}

相关文章:

  • 卷积神经网络 - 参数学习
  • NVIDIA V100显卡支持Tensor Core技术,而Granite-3.1-8B模型在适当的条件下可以利用Tensor Core来加速数据处理
  • 二分图相关
  • 03 Python 基础:数据类型、运算符与流程控制解析
  • AIP-180 向后兼容
  • 统计矩的高阶推广:经验还是理论推导?
  • 计算图(Computation Graph)
  • git revert 用法实战:撤销一个 commit 或 merge
  • Go常见问题与回答(下)
  • 数据可视化革命!「图表狐」五大行业新范式:从科研论文到商业决策的AI进化论
  • 软件公司高新技术企业代办:机遇与陷阱并存-优雅草卓伊凡
  • ETL 自动化:提升数据处理效率与准确性的核心驱动力
  • 小红书 web x-s x-t X-Mns 分析
  • 行业分析---小米汽车2024全年财报
  • 基于Docker的OpenObserve快速搭建实现全链路可观测性远程管理
  • ZLinq:意在替代Linq的高性能.Net开源库
  • STM32/GD32主要学习内容
  • Python应用指南:利用高德地图API获取POI数据(关键词版)
  • 日常学习开发记录-select组件(2)
  • 【stm32】用从模式控制器 完成PWM的测量
  • 央行就《关于规范供应链金融业务引导供应链信息服务机构更好服务中小企业融资有关事宜的通知》答问
  • 经营业绩持续稳中向好,国铁集团2024年度和2025年一季度财务决算公布
  • 李乐成任工业和信息化部部长
  • 兴业银行一季度净赚超237亿降逾2%,营收降逾3%
  • 五一假期上海铁路预计发送446万人次,同比增长8.4%
  • 马上评丨市长信箱“已读乱回”,群众在意的是什么