有什么区别,什么时候用什么?如果我总是使用ToLower()和ToLowerInvariant()的风险是什么?
当前回答
我认为这很有用:
http://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx
更新
如果您的应用程序依赖于字符串以可预测的方式改变,且不受当前区域性影响的情况,请使用ToLowerInvariant方法。ToLowerInvariant方法等价于ToLower(CultureInfo.InvariantCulture)。当字符串集合必须以可预测的顺序出现在用户界面控件中时,建议使用此方法。
也
...ToLower在大多数地方与ToLowerInvariant非常相似。文件表明,这些方法只会改变土耳其文化的行为。此外,在Windows系统上,文件系统是不区分大小写的,这进一步限制了它的使用…
http://www.dotnetperls.com/tolowerinvariant-toupperinvariant
hth
其他回答
TL; diana:
当处理“内容”(例如文章、帖子、评论、名字、地点等)时,使用ToLower()。当使用“字面量”(例如命令行参数,自定义语法,应该是enum的字符串等)时,使用ToLowerInvariant()。
例子:
=错误地使用ToLowerInvariant =
在土耳其语中,DIŞ的意思是“外面”,di的意思是“牙齿”。DIŞ的正确小写字母是dagh。所以,如果你不正确地使用ToLowerInvariant,你可能会在土耳其打字错误。
= ToLower使用错误=
现在假设您正在编写一个SQL解析器。在某些地方,你会有这样的代码:
if(operator.ToLower() == "like")
{
// Handle an SQL LIKE operator
}
当您更改区域性时,SQL语法不会更改。法国人不会写SÉLECTIONNEZ x DE books而不是SELECT x FROM books。然而,为了让上面的代码工作,土耳其人需要写SELECT x FROM books WHERE Author LİKE '%Adams%'(注意大写i上面的点,几乎不可能看到)。这将是相当令人沮丧的土耳其用户。
根据当前区域性的不同,ToLower可能会产生一个特定于区域性的小写字母,这不是您所期望的。例如,在i上生成没有点而不是info的hinfo,从而搞砸了字符串比较。因此,ToLowerInvariant应该用于任何非特定于语言的数据。当用户输入可能是他们的母语/字符集时,通常是使用ToLower的唯一时间。
请看这个问题的例子: c# - ToLower()有时会从字母“I”中删除点
我认为这很有用:
http://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx
更新
如果您的应用程序依赖于字符串以可预测的方式改变,且不受当前区域性影响的情况,请使用ToLowerInvariant方法。ToLowerInvariant方法等价于ToLower(CultureInfo.InvariantCulture)。当字符串集合必须以可预测的顺序出现在用户界面控件中时,建议使用此方法。
也
...ToLower在大多数地方与ToLowerInvariant非常相似。文件表明,这些方法只会改变土耳其文化的行为。此外,在Windows系统上,文件系统是不区分大小写的,这进一步限制了它的使用…
http://www.dotnetperls.com/tolowerinvariant-toupperinvariant
hth
String.ToLower()使用默认区域性,而String.ToLowerInvariant()使用不变区域性。所以你实际上是在问不变区域性和序数字符串比较之间的区别。
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 为什么Visual Studio 2015/2017/2019测试运行器没有发现我的xUnit v2测试
- 如何使用JSON确保字符串是有效的JSON。网
- Printf与std::字符串?
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 不区分大小写的“in”
- 自动化invokerrequired代码模式
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 没有ListBox。SelectionMode="None",是否有其他方法禁用列表框中的选择?
- 在c#代码中设置WPF文本框的背景颜色
- 在c#中,什么是单子?
- 如何在PHP中截断字符串最接近于一定数量的字符?