यह पता है कि नियम संस्कृति पर निर्भर स्ट्रिंग तुलना के तहत झूठ आसान नहीं है। यह काफी सुसंगत प्रतीत होता है कि विराम चिह्न U + 0022 "
(उद्धरण चिह्न) और U + 204D ⁍
(काले दायां BULLET) माना जाता है "पर्याप्त बराबर" (अपरिवर्तनीय संस्कृति सहित) संस्कृति तुलना के तहत। इन उदाहरणों सभी संकेत मिलता है कि:
// culture-sensitive:
Console.WriteLine("\"".StartsWith("⁍"));
Console.WriteLine("⁍".StartsWith("\""));
Console.WriteLine("\"".StartsWith("⁍", StringComparison.InvariantCulture));
Console.WriteLine("⁍".StartsWith("\"", StringComparison.InvariantCulture));
Console.WriteLine("\"".Equals("⁍", StringComparison.CurrentCulture));
Console.WriteLine("⁍".Equals("\"", StringComparison.CurrentCulture));
Console.WriteLine("\"".Equals("⁍", StringComparison.InvariantCulture));
Console.WriteLine("⁍".Equals("\"", StringComparison.InvariantCulture));
Console.WriteLine(StringComparer.CurrentCulture.Equals("\"", "⁍"));
Console.WriteLine(StringComparer.CurrentCulture.Equals("⁍", "\""));
Console.WriteLine(StringComparer.InvariantCulture.Equals("\"", "⁍"));
Console.WriteLine(StringComparer.InvariantCulture.Equals("⁍", "\""));
Console.WriteLine("\"".CompareTo("⁍"));
Console.WriteLine("⁍".CompareTo("\""));
Console.WriteLine(StringComparer.CurrentCulture.Compare("\"", "⁍"));
Console.WriteLine(StringComparer.CurrentCulture.Compare("⁍", "\""));
Console.WriteLine(StringComparer.InvariantCulture.Compare("\"", "⁍"));
Console.WriteLine(StringComparer.InvariantCulture.Compare("⁍", "\""));
अन्य उदाहरण string
पर, यह देखते हुए किया जा सकता था, उदाहरण के लिए static
तरीकों, पर वे बराबर हैं।
एक
क्रमसूचक तुलना, निश्चित रूप से U + 0022 से (कम से कम) अलग होना चाहिए के साथ
U + 204D (कि आसान है!):
// ordinal:
Console.WriteLine("\"".StartsWith("⁍", StringComparison.Ordinal));
Console.WriteLine("⁍".StartsWith("\"", StringComparison.Ordinal));
Console.WriteLine("\"".Equals("⁍"));
Console.WriteLine("⁍".Equals("\""));
Console.WriteLine(StringComparer.Ordinal.Equals("\"", "⁍"));
Console.WriteLine(StringComparer.Ordinal.Equals("⁍", "\""));
Console.WriteLine(StringComparer.Ordinal.Compare("\"", "⁍"));
Console.WriteLine(StringComparer.Ordinal.Compare("⁍", "\""));
स्रोत
2015-01-19 00:15:54
एक यूनिकोड में सही चार के नाम को फिर से देखें तालिका। यूनिकोड तुलना सूक्ष्म हैं। उदाहरण के लिए कुछ वर्ण (उदा। शून्य-चौड़ाई (गैर) योजक या कुछ संशोधक) गुंबद तुलना में अनदेखा कर रहे हैं। – CodesInChaos
यदि आप सरल नियम चाहते हैं, तो सामान्य तुलना का उपयोग करें। – CodesInChaos
@CodesInChaos साधारण में स्थानांतरित करना चाहते हैं और मैं संभावित ब्रेकिंग परिवर्तनों के माध्यम से चल रहा हूं जब यह और कई अन्य लोग आए। – Zoom