【发布时间】:2019-05-31 04:58:17
【问题描述】:
String.IndexOf() 方法没有按我的预期运行。
我预计它不会找到匹配项,因为确切的词 you 不在str 中。
string str = "I am your Friend";
int index = str.IndexOf("you",0,StringComparison.OrdinalIgnoreCase);
Console.WriteLine(index);
输出:5
我的预期结果是 -1,因为字符串不包含 you。
【问题讨论】:
-
您要的是字符串中字符序列“you”的位置,而不是word“you”的位置在字符串中。由于“your”以“you”开头,我们可以得出结论,字符序列“you”在字符串中。 documentation 声明 “报告指定 Unicode 字符或 string 在此实例中第一次出现的从零开始的索引。如果未找到该字符或字符串,则该方法返回 -1在这种情况下。”
-
@bolkay 虽然
Contains()也会断定“你”在字符串“我是你的朋友”中。 -
我是 your 朋友...在我看来它就在其中。如果您需要单词边界,请使用正则表达式,或者在搜索的左右空格中破解字符串(但可能会导致更多问题)
-
我怀疑您想要做的是
string.Split将字符串拆分为单词。然后string.Compare而不是string.IndexOf。 -
如果您想保留大部分代码,可以搜索“you”而不是“you”(只需在“you”字符串前后添加空格)