2017-05-29 26 views
1

我想在這裏的例子給出使用IndexOf爲什麼indexOf不適合我? (的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;的d我在Mac上使用Visual Studio。我錯過了什麼嗎?

EDIT:好,問題的說明可以在「備註」中找到:

此方法執行字(區分大小寫和文化敏感)使用當前區域性 搜索。搜索從此實例的第一個 字符位置開始並持續到最後一個 字符位置。

字符集包含可忽略的字符,這些字符在執行語言或文化敏感 比較時不會考慮 。在對文化敏感的搜索中,如果值包含可忽略的字符,則結果等同於使用刪除的字符進行搜索。如果值只包含一個或多個可忽略的字符,則IndexOf(String)方法始終返回0(零)至 ,指示在當前的 實例的開頭處找到匹配項。在以下示例中,使用IndexOf(String)方法找到三個子字符串(一個軟連字符(U + 00AD),一個軟連字符 後跟「n」,以及一個軟連字符後跟「m」)字符串。 只有一個字符串包含一個軟連字符。如果在.NET Framework 4或更高版本上運行示例 ,則在每種情況下,因爲軟連字符是可忽略的字符,所以結果與未包含在軟連字符中的結果相同。當僅搜索連字符軟 時,該方法返回0(零),表示它已在該字符串的開頭找到匹配的 。

+2

https://stackoverflow.com/questions/10941375/could-string-comparisons-really-differ-based-on-culture-when-這可以幫助 – TGKL

+1

這不是一個C#編譯錯誤,事實上,根據谷歌,你是世界上唯一有這種錯誤的人。你有沒有StyleCop或ReSharper運行和/或你是否解釋或翻譯該錯誤信息? – CodeCaster

+0

我不熟悉StyleCop或ReSharper,但我只是在Windows機器(「.Net框架」項目)嘗試,它的工作原理...嗯編輯:我想我需要這個https://stackoverflow.com/questions/ 28280082/can-i-program-c-sharp-on-a-mac –

回答

1

我假設你正在使用的.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)); 
+0

它工作!謝謝 –