当前位置:  开发笔记 > 编程语言 > 正文

无情地比较C#中的字符串

如何解决《无情地比较C#中的字符串》经验,为你挑选了2个好方法。

假设我有两个字符串:a和b.为了比较a和被忽略大小写时是否具有相同的值,我总是使用:

// (Assume a and b have been verified not to be null)

if (a.ToLower() == b.ToLower())

但是,使用Reflector,我在.NET Framework中已经看过几次:

// (arg three is ignoreCase)

if (string.Compare(a, b, true) == 0)

我测试哪个更快,每次用我使用的字符串ToLower()节拍Compare().

是否有理由Compare()而不是ToLower()?有什么不同的CultureInfo?我在挠头.



1> Greg Beech..:

您应该关注的主要问题不是性能,它是正确性,从这个方面来说,您可能希望用于不区分大小写的比较的方法是:

string.Compare(a, b, StringComparison.OrdinalIgnoreCase) == 0;

要么

a.Equals(b, StringComparison.OrdinalIgnoreCase)

(如果你知道字符串可能为null,那么第一个是有用的;如果你已经知道至少有一个字符串是非null的话,后者更容易编写.我从未测试过性能但是假设它会相似.)

Ordinal或者OrdinalIgnoreCase是一个安全的赌注,除非你知道你想使用另一种比较方法; 获取做出决定所需的信息在MSDN上阅读本文.



2> Noldorin..:

MSDN文章的备注部分应该解释一下.从本质上讲,原因是不同文化背景下的兼容性.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有