2012-02-13 17 views
9

मेरे पास "Ärger, -Ökonom-i-Übermut-ẞ-ß" स्ट्रिंग है और जब मैं इंडेक्सऑफ ("-") चलाता हूं तो मुझे 23 का परिणाम मिलता है। यदि मैं Replace पर उपयोग करता हूं एक ही स्ट्रिंग कुछ भी नहीं बदला जाता है।जर्मन स्ट्रिंग पर इंडेक्सऑफ से अजीब परिणाम

मुझे समझ में नहीं आता कि क्या हो रहा है, तो क्या कोई इस मुद्दे पर कुछ प्रकाश डाल सकता है? आवेदन संस्कृति क्रोएशियाई पर सेट है, यह जर्मन नहीं है, और फ्रेमवर्क संस्करण 3.5 है।

जर्मन में संस्कृति बदलना (डी-डीई) इस अजीब व्यवहार को नहीं बदलता है।

enter image description here

+2

क्या यह सही है कि स्ट्रिंग में कोई "-" नहीं है? –

+0

मैं ऐसा कहूंगा, किसी भी तरह इंडेक्सऑफ एक के रूप में ẞ का इलाज कर रहा है - ठीक है, समस्या यह है कि –

+2

मुझे एक बग की तरह लगता है। मैं इस मुद्दे को .NET 3.5 के साथ पुन: पेश कर सकता हूं, लेकिन यह नेट 4.0 के साथ अपेक्षित -1 देता है। – ken2k

उत्तर

3

चूंकि श्री लिस्टर अपने अच्छी तरह से योग्य अपवर्तित नहीं चाहते हैं, इसलिए मैं उनकी टिप्पणी यहां पेस्ट कर दूंगा, और जवाब स्वीकार करूंगा।

मुझे डर है कि U + 1E9E .NET 3.5 के अनुसार अपरिभाषित है हूँ, क्योंकि इस चरित्र यूनिकोड 4.0 (या यूनिकोड .NET 3.5 का उपयोग करता है की जो भी संस्करण) में मौजूद नहीं था। यह एक बिल्कुल नया जोड़ा है (जर्मन ß के अपरकेस संस्करण )। तो इंडेक्सऑफ फ़ंक्शन इसे अनदेखा करता है। यदि आपके पास टेक्स्ट पर नियंत्रण है, तो आप चरित्र को ß या SS, में बदल सकते हैं जो भी अधिक उपयुक्त है। बेशक बेहतर समाधान को .NET से v4.0 अपग्रेड करना है!

1

IndexOf वर्तमान संस्कृति का उपयोग करता है अगर आप इसे अन्यथा नहीं बताया:

इस विधि में एक शब्द भी करता है (केस-संवेदी

यहाँ डीबगर से स्क्रीनशॉट है और संस्कृति-संवेदनशील) वर्तमान संस्कृति का उपयोग कर खोज।

Replace एक क्रमसूचक तुलना उपयोग करता है:

इस विधि एक क्रमसूचक (केस-संवेदी और संस्कृति-संवेदी) खोज oldValue खोजने के लिए करता है।

+2

क्या ऐसा कुछ है जो इस पहलू में .NET 3.5 और .NET 4.0 के बीच बदल गया है? क्योंकि कोड .NET 4.0 में अपेक्षित काम करता है। –

+0

@ डारिन: सुनिश्चित नहीं है - उस व्यवहार को तब तक दस्तावेज किया गया है जब तक मुझे याद है। मैं अब कुछ परीक्षण कर रहा हूं, लेकिन मैं ओपी के परिणामों को .NET4 में दोहराना नहीं कर सकता। – LukeH

+0

हां, लेकिन .NET 3.5 में व्यवहार को पुन: उत्पन्न किया जा सकता है। –

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