आप अपरिवर्तनीय संस्कृति की तुलना नियमों का उपयोग कर तार की तुलना करने को निर्दिष्ट कर रहे हैं। जाहिर है, परिवर्तनीय संस्कृति में, दो तारों को बराबर नहीं माना जाता है।
आप String.Compare का उपयोग कर और संस्कृति है जिसके लिए आप तार की तुलना करना चाहते उपलब्ध कराने के एक संस्कृति विशिष्ट ढंग से उनकी तुलना कर सकते हैं:
if(String.Compare("Île", "Ile", new CultureInfo("fr-FR"), CompareOptions.None)==0)
कृपया ध्यान दें कि फ्रेंच संस्कृति में, उन तार भी कर रहे हैं अलग माना जाता है। मैंने यह दिखाने के लिए उदाहरण शामिल किया, कि यह ऐसी संस्कृति है जो सॉर्ट नियमों को परिभाषित करती है। हो सकता है कि आप ऐसी संस्कृति ढूंढ सकें जो आपकी आवश्यकताओं को फिट करे, या आवश्यक तुलना नियमों के साथ एक कस्टम बनाएं, लेकिन संभवतः यह संभव नहीं है कि आप क्या चाहते हैं।
स्ट्रिंग सामान्य इसलिए कोई लहजे कर रहे हैं,
have a look at this question का एक अच्छा उदाहरण के लिए
। स्ट्रिंग को सामान्य करने के बाद, आप उनकी तुलना करने और उन्हें बराबर मानने में सक्षम होंगे। यह आपकी आवश्यकता को लागू करने का सबसे आसान तरीका होगा।
संपादित
यह न सिर्फ मैं चरित्र InvariantCulture में इस व्यवहार है, इस बयान भी झूठे रिटर्न जाता है:
String.Equals("Ilê", "Ile", StringComparison.InvariantCultureIgnoreCase)
ढांचा सही काम करता है - उन अक्षरों तथ्य अलग कर रहे हैं (अलग अर्थ है) अधिकांश संस्कृतियों में, और इसलिए उन्हें समान नहीं माना जाना चाहिए।
बस कोशिश की, +1 लौटाता है। – Bryan
यहां तक कि अगर यह काम करता है, तो यह मुझे अजीब लगता है कि समस्या उस चरित्र के लिए विशेष है। – Bryan
@ ब्रायन: 'Î' यू +00 सीई है, 'मैं यू +0049 है, वे पूरी तरह से अलग हैं। – kennytm