2012-06-16 7 views
7

यह एक .NET बग होना चाहिए, है ना?मैं .NET के प्रारंभ से इस अप्रत्याशित व्यवहार को क्यों देख रहा हूं?

"KonNy".StartsWith("Kon") झूठा रिटर्न देता है, जबकि "KonNy".StartsWith("Ko") और "KonN".StartsWith("Kon") सत्य वापस आते हैं।

क्या मुझे कुछ भी याद आ रही है?

+7

क्या आप किसी भी हंगेरियन से हैं? हंगेरियन संयोजन घटना को समझाएगा (हालांकि मुझे नहीं पता कि .NET के 'स्टार्ट्सथ' के साथ संयोजन विवरण लागू होता है), यह देखते हुए कि 'nny' एक ही पत्र है। – Amadan

+0

सबसे अधिक संभावना है कि आपके स्ट्रिंग – Filip

+0

अमादन, महान अवलोकन में कुछ गैर-मानक वर्ण हैं। मन जवाब दे रहा है तो मैं इसे स्वीकार कर सकता हूं? – ggPeti

उत्तर

14

टिप्पणियों से दोहराया:

मैं नेट विशेष रूप से पता नहीं है, लेकिन मैं संदिग्ध आप इस घटना का निरीक्षण कर सकते हैं, तो StartsWith एक मिलान जहां nny इस तरह के हंगरी के रूप में एक पत्र था, का पालन किया। अगर मैं सही हूं और यदि आप अपने कोलेक्शन को तटस्थ में बदल देते हैं, तो आपका "बग" गायब हो जाएगा। :)

9

संपादित करें: यह एक संस्कृति संवेदनशीलता मुद्दा है, जो केवल हंगेरियन संस्कृतियों में दिखाता है। रेप्रो:

using System; 
using System.Globalization; 

class Test 
{ 
    static void Main()   
    { 
     foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures)) 
     { 
      if (!"KonNy".StartsWith("Kon", false, culture)) 
      { 
       Console.WriteLine(culture); 
      } 
     } 
    } 
} 

आउटपुट:

hu 
hu-HU 

आप एक संस्कृति-संवेदी तुलना चाहते हैं, StringComparison.Ordinal usr के जवाब के अनुसार निर्दिष्ट करें।

+1

यह बिल्कुल ठीक है कि मैंने इसे पर्यावरण के बाहर पुन: उत्पन्न किया जहां मुझे इसका सामना करना पड़ा। झूठी वापसी मजेदार बात यह है कि पावरशेल में यह सच हो गया। – ggPeti

+1

जो केवल आपकी संस्कृति के लिए अपने दावे को अस्वीकार करता है, और जैसा कि आप जानते हैं कि संस्कृतियां अजीब हो सकती हैं। आपको लूप में सभी संस्कृतियों को जांचने के लिए पुन: प्रयास करना चाहिए। – CodesInChaos

+0

@ggPeti: ठीक है कार्यक्रम मैंने प्रिंट लिखा है सच है। क्या यह वास्तव में * आपके लिए 'गलत' प्रिंट करता है? –

1

मुझे संदेह है कि आपकी स्ट्रिंग में शून्य-चौड़ाई या गैर-प्रिंट करने योग्य वर्ण हैं। यूनिकोड चरित्र अंतरिक्ष में कुछ गंदे, अनजान आश्चर्य शामिल हैं। अपने स्ट्रिंग अक्षर पर ToCharArray को कॉल करने का प्रयास करें और परिणामी चार कोड का निरीक्षण करें।

और स्टार्टविथ के साथ स्टार्टविथ को कॉल करने का प्रयास करें। यह सुनिश्चित करने के लिए कि आपकी संस्कृति हस्तक्षेप नहीं करती है।

संबंधित मुद्दे