为什么我没有为我工作? (indexOf是文化感知并且缺少字符串比较参数)

时间:2017-05-29 21:01:44

标签: c#

我尝试使用此处示例中给出的IndexOf

https://msdn.microsoft.com/en-us/library/k8b1470s(v=vs.110).aspx

如果向下滚动,则显示示例:

  string s1 = "ani\u00ADmal";
  string s2 = "animal";

  // Find the index of the soft hyphen.
  Console.WriteLine(s1.IndexOf("\u00AD"));
  Console.WriteLine(s2.IndexOf("\u00AD"));

我正在尝试从Main(string[] args)执行该操作,并且我收到编译错误,IndexOf具有文化感知并且缺少字符串比较参数。"我已导入using System;using System.IO;,我在Mac上使用Visual Studio。我错过了什么吗?

编辑:好的,可以在"备注"

下找到问题的解释。
  

此方法执行一个单词(区分大小写且对文化敏感)   使用当前文化进行搜索。搜索从第一个开始   此实例的字符位置并一直持续到最后一个   角色位置。

     

字符集包括可忽略的字符,它们是字符   在执行语言或文化敏感时不考虑   比较。在文化敏感的搜索中,如果值包含   可忽略的字符,结果相当于用它搜索   字符已删除。如果值仅包含一个或多个可忽略的值   字符,theIndexOf(String)方法始终返回0(零)   表示匹配是在当前开头找到的   实例。在以下示例中,使用IndexOf(String)方法   找到三个子串(一个软连字符(U + 00AD),一个软连字符   接下来是" n"和一个软连字符,然后是两个字符串中的" m")。   只有一个字符串包含一个软连字符。如果示例运行   在.NET Framework 4或更高版本中,在每种情况下,因为软   连字符是一个可忽略的字符,结果就像是一样   软连字符未包含在值中。寻找软时   仅限连字符,该方法返回0(零)以指示它已找到   字符串开头的匹配。

1 个答案:

答案 0 :(得分:2)

我假设您正在使用的.NET Framework的实现没有那么重载。尝试通过添加字符串比较来使用它建议的IndexOf(string, StringComparison)重载:

string s1 = "ani\u00ADmal";
string s2 = "animal";

// Find the index of the soft hyphen.
Console.WriteLine(s1.IndexOf("\u00AD", StringComparison.CurrentCulture));
Console.WriteLine(s2.IndexOf("\u00AD", StringComparison.CurrentCulture));