C# 3.0 CookBook: 二、字符与字符串处理(2):两个字符相比较时控制大小写

问题

    要判断两个字符是否相等,但是需要一个灵活掌握区分大小写或不区别大小写的手段。

解决方法:

    在char类型中创建一个扩展方法,使用char结构中的Equals方法比较两个字符。

static class CharStrExtMethods
{
    public static bool IsCharEqual(this char firstChar, char secondChar)
    {
        return (IsCharEqual(firstChar, secondChar, false));
    }
    public static bool IsCharEqual(this char firstChar, char secondChar,
                                   bool caseSensitiveCompare)
    {
        if (caseSensitiveCompare)
        {
            return (firstChar.Equals(secondChar));
        }
        else
        {
            return (char.ToUpperInvariant(firstChar).Equals(
            char.ToUpperInvariant(secondChar)));
        }
    }
    public static bool IsCharEqual(this char firstChar, CultureInfo firstCharCulture,
                                   char secondChar, CultureInfo secondCharCulture)
    {
        return (IsCharEqual(firstChar, firstCharCulture,
                secondChar, secondCharCulture, false));
    }
    public static bool IsCharEqual(this char firstChar, CultureInfo firstCharCulture,
                                   char secondChar, CultureInfo secondCharCulture,
                                   bool caseSensitiveCompare)
    {
        if (caseSensitiveCompare)
        {
            return (firstChar.Equals(secondChar));
        }
        else
        {
            return (char.ToUpper(firstChar, firstCharCulture).Equals
                   (char.ToUpper(secondChar, secondCharCulture)));
        }
    }
}

    第一个重载的扩展方法IsCharEqual只获取一个参数,用于和当前字符进行比较。该方法然后再调用第二个包含两个参数的IsCharEqual方法。当该方法被调用时最后一个参数的默认值为false。用户也不需要给caseSensitiveCompare参数赋值,它会自动地设置默认值为false。

    进一步对重载的IsCharEqual方法进行扩展,可以使其以处理不同种类语言的文字。调用ToUpperInvariant方法时增加CultureInfo参数可以传入用户调用的字符串的区域信息。该信息允许ToUpperInvariant正确地将那些包含特殊区域信息的字符大写化(例如代表语言、地域的字母)。

讨论

   当比较两个字符串且考虑其大小写情况时可混合使用String类的ToUpperInvariant方法和Equals方法。ToUpperInvariant方法

转载于:https://www.cnblogs.com/PocketZ/archive/2010/04/16/1713243.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值