我对IndexOf
函数有一个奇怪的问题:
"strcat".IndexOf("st")
返回 -1
"strcat".IndexOf("str")
返回 0
有谁可以解释为什么会这样?
答案 0 :(得分:5)
这可能与您系统的当前文化有关。根据你的名字,我假设越南语。
System.Threading.Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("vi-VN")
Dim i1 As Int32 = "strcat".IndexOf("st")
Dim i2 As Int32 = "strcat".IndexOf("str")
Dim i3 As Int32 = "strcat".IndexOf("st", System.StringComparison.InvariantCulture)
Dim i4 As Int32 = "strcat".IndexOf("str", System.StringComparison.InvariantCulture)
产量:i1 = -1,i2 = 0,i3 = 0,i4 = 0
编辑了评论部分提出的地址问题。
这是怎么发生的?我不知道文化会改变什么吗?
要回答这个问题,您应该参考该方法的文档。 见:String.IndexOf Method (String)
相关信息是:
此方法使用当前文化执行单词(区分大小写和文化敏感)搜索。搜索从此实例的第一个字符位置开始,一直持续到最后一个字符位置。
给定的文化对于所考虑的内容有自己的规则"常识/实践"。你不应该认为你认为正常的东西在不同的文化中是正常的。这就是执行比较的方法允许您指定文化以定义用于执行比较的规则的原因。
这不仅适用于字符串,也适用于日期。
最着名的编程难题是:您的程序是否通过火鸡测试?也被称为"土耳其语 - 我的问题"。这些是您可以研究的术语以获取更多信息。