有什么区别以及何时使用什么?如果我总是使用ToLower()会有什么风险,如果我总是使用ToLowerInvariant(),风险又是什么?
Aar*_*nLS 131
根据当前的文化,ToLower可能会生成您不期望的特定于文化的小写字母.比如?nfo在i上没有点而不是info因此产生字符串比较.因此,ToLowerInvariant应该用于任何非语言特定的数据.如果您的用户输入可能是其母语/字符集,则通常是您使用ToLower的唯一时间.
请参阅此问题以获取此问题的示例: C# - ToLower()有时会从字母"I"中删除点
dan*_*iax 45
我认为这可能有用:
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
心连心
Pac*_*ace 16
TL; DR:
使用"内容"(例如文章,帖子,评论,姓名,地点等)时使用ToLower().使用"文字"时(例如命令行参数,自定义语法,应该是枚举的字符串等)使用ToLowerInvariant().
例子:
= 错误使用ToLowerInvariant =
在土耳其语中,DI?意思是"外部",di?意思是"牙齿".适当的下壳DI?是d??.因此,如果您使用ToLowerInvariant不当,您可能会在土耳其发生错别字.
= 错误使用ToLower =
现在假装你正在编写一个SQL解析器.在某处您将拥有如下代码:
if(operator.ToLower() == "like")
{
// Handle an SQL LIKE operator
}
Run Code Online (Sandbox Code Playgroud)
更改文化时,SQL语法不会更改.一个法国人不写SÉLECTIONNEZ x DE books而不是SELECT X FROM books.但是,为了使上述代码有效,土耳其人需要写SELECT x FROM books WHERE Author L?KE '%Adams%'(注意首都上方的点,几乎不可能看到).这对您的土耳其用户来说非常令人沮丧.
| 归档时间: |
|
| 查看次数: |
58181 次 |
| 最近记录: |