You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Char.IsCurrencySymbol方法?C#标准库现有Char.IsSymbol方法

实现Char.IsCurrencySymbol的几种实用方案

嘿,这个需求我之前也碰到过,给你分享几个简单靠谱的实现思路,满足不同场景的需求:

方案一:基于Unicode官方分类(最推荐)

.NET的Char类其实已经提供了获取字符Unicode分类的方法,货币符号在Unicode里属于专门的UnicodeCategory.CurrencySymbol类别,直接用这个判断就完事了——这也是最标准、覆盖最全面的方式,能识别所有Unicode标准定义的货币符号(比如$、€、£、¥这些都不在话下)。

代码示例:

public static class CharExtensions
{
    public static bool IsCurrencySymbol(this char c)
    {
        return Char.GetUnicodeCategory(c) == UnicodeCategory.CurrencySymbol;
    }
}

测试你给的例子:

  • '$'.IsCurrencySymbol() → 返回true
  • '@'.IsCurrencySymbol() → 返回false

而且这个方法还能识别一些不太常见的货币符号,比如₹(印度卢比)、₽(俄罗斯卢布),完全不用自己手动维护符号列表,省心!

方案二:自定义符号集合(适合特殊业务场景)

如果你的业务里需要识别一些Unicode标准没收录的自定义货币符号,或者只想限定某几个特定符号,那可以用哈希集合来实现,灵活性拉满。

代码示例:

public static class CharExtensions
{
    // 按需添加你需要的货币符号
    private static readonly HashSet<char> CurrencySymbols = new HashSet<char>
    {
        '$', '€', '£', '¥', '₹', '₽'
    };

    public static bool IsCurrencySymbol(this char c)
    {
        return CurrencySymbols.Contains(c);
    }
}

这种方式的好处是你完全可控,想加什么符号就加什么,但缺点是需要自己维护这个集合,要是有新的符号需求就得手动更新。

小提示

  • 注意区分全角和半角符号:比如全角的$(Unicode U+FF04),用方案一也能正确识别为货币符号,因为它的Unicode分类也是CurrencySymbol;
  • 方案一的实现会随着.NET版本和Unicode标准的更新自动覆盖新的货币符号,不用你操心;
  • 如果是做全球化业务,优先用方案一,毕竟它能覆盖所有国际标准货币符号。

内容的提问来源于stack exchange,提问作者Yair Halberstadt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:12:18