C# 字符串罗马数字123转汉字一二三

要将字符串 "123" 转换为 "一二三",可以通过以下几种方法来实现。

1. 使用映射字典

可以创建一个映射字典,将数字字符映射到对应的中文数字,然后遍历原始字符串进行替换:

using System;
using System.Collections.Generic;
using System.Text;

public class Program
{
    public static void Main()
    {
        string input = "123";
        string output = ConvertNumbersToChinese(input);
        Console.WriteLine(output); // 输出:一二三
    }

    public static string ConvertNumbersToChinese(string input)
    {
        // 创建数字到中文的映射字典
        Dictionary<char, string> numberToChinese = new Dictionary<char, string>
        {
            {'0', "零"},
            {'1', "一"},
            {'2', "二"},
            {'3', "三"},
            {'4', "四"},
            {'5', "五"},
            {'6', "六"},
            {'7', "七"},
            {'8', "八"},
            {'9', "九"}
        };

        StringBuilder sb = new StringBuilder();

        foreach (char c in input)
        {
            if (numberToChinese.ContainsKey(c))
            {
                sb.Append(numberToChinese[c]);
            }
            else
            {
                // 处理非数字字符(可选)
                sb.Append(c);
            }
        }

        return sb.ToString();
    }
}

2. 使用 Regex 和 Replace 方法

如果你有更多的数字字符串需要转换,可以使用正则表达式和 Replace 方法,但这种方法通常不如映射字典直观和高效。

using System;
using System.Text.RegularExpressions;

public class Program
{
    public static void Main()
    {
        string input = "123";
        string output = ConvertNumbersToChinese(input);
        Console.WriteLine(output); // 输出:一二三
    }

    public static string ConvertNumbersToChinese(string input)
    {
        return Regex.Replace(input, "[0-9]", m =>
        {
            switch (m.Value)
            {
                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 m.Value;
            }
        });
    }
}

3. 使用国际化库

如果需要处理更复杂的情况或支持多语言,考虑使用国际化库(如 Humanizer),但这通常涉及额外的库引入和配置。

选择合适的方法

  • 映射字典: 适用于简单的数字转换,代码清晰,效率高。
  • 正则表达式: 灵活处理多个模式,但在性能上可能稍逊一筹。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我写代码菜如坤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值