string.ToLower () और string.ToLowerInvariant ()


163

क्या अंतर है और कब उपयोग करना है? यदि मैं हमेशा उपयोग करता हूं तो जोखिम ToLower()क्या है और यदि मैं हमेशा उपयोग करता हूं तो जोखिम क्या है ToLowerInvariant()?


4
शायद आपको इसके बजाय अपरकेस को सामान्य करना चाहिए। देखें msdn.microsoft.com/en-us/library/bb386042.aspx
Habakuk

जवाबों:


148

वर्तमान संस्कृति के आधार पर, ToLower एक संस्कृति विशिष्ट लोअरकेस पत्र का उत्पादन कर सकता है, जिसकी आपको उम्मीद नहीं है। जैसे ınfoकि मैं इसके बजाय i पर डॉट के बिना उत्पादन कर रहा हूं infoऔर इस प्रकार स्ट्रिंग तुलनाओं को कम कर रहा हूं । उस कारण से, किसी भी गैर-भाषा-विशिष्ट डेटा पर ToLowerInvariant का उपयोग किया जाना चाहिए। जब आपके पास उपयोगकर्ता इनपुट हो सकता है जो कि उनकी मूल भाषा / वर्ण-सेट में हो सकता है, तो आमतौर पर आप केवल ToLower का उपयोग करते हैं

इस प्रश्न को इस मुद्दे के उदाहरण के लिए देखें: C # - ToLower () कभी-कभी "I" अक्षर से डॉट निकाल रहा है


45

मुझे लगता है कि यह उपयोगी हो सकता है:

http://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx

अपडेट करें

यदि आपका आवेदन वर्तमान संस्कृति से अप्रभावित होने वाले पूर्वानुमान के तरीके में परिवर्तन के मामले पर निर्भर करता है, तो ToLowerInvariant पद्धति का उपयोग करें। ToLowerInvariant विधि ToLower (CultureInfo.InvariantCulture) के बराबर है। विधि की सिफारिश तब की जाती है जब उपयोगकर्ता इंटरफ़ेस नियंत्रण में स्ट्रिंग्स का एक संग्रह पूर्वानुमान क्रम में दिखाई दे।

भी

... ToLower ToLowerInvariant के अधिकांश स्थानों में बहुत समान है। दस्तावेजों से संकेत मिलता है कि ये तरीके केवल तुर्की संस्कृतियों के साथ व्यवहार को बदल देंगे। इसके अलावा, विंडोज सिस्टम पर, फ़ाइल सिस्टम केस-असंवेदनशील है, जो इसके उपयोग को और सीमित करता है ...

http://www.dotnetperls.com/tolowerinvariant-toupperinvariant

hth


@danyolgiax क्या आप आगे विस्तृत कर सकते हैं? खिचड़ी एमएसडीएन के लिंक से अपनी usablity का अनुमान लगाया। धन्यवाद
Prerak कश्मीर

2
हाँ ToLowerInvariant अपेक्षित रूप से तुर्की में काम नहीं कर रहा है। 'I बन जाता है
मॉन्स्टरमोरर

28

String.ToLower()डिफ़ॉल्ट संस्कृति का String.ToLowerInvariant()उपयोग करता है, जबकि अपरिवर्तनीय संस्कृति का उपयोग करता है। तो आप अनिवार्य रूप से अपरिवर्तनीय संस्कृति और क्रमिक स्ट्रिंग तुलना के बीच अंतर पूछ रहे हैं ।


नहीं, वह नहीं है। "ऑर्डिनल" एक तीसरा विकल्प है - वर्तमान संस्कृति को "अनदेखा" करने का थोड़ा अलग तरीका। ToLowerभिन्नताओं पर चर्चा करने में भेद प्रासंगिक नहीं है ; साधारण बनाम आक्रमणकारी सिर्फ दो तारों के "क्रम क्रम" को बदलता है, समानता की तुलना को नहीं बदलता है।
टूलमेकरसैट

27

टी एल; डॉ:

"सामग्री" के साथ काम करते समय (जैसे लेख, पोस्ट, टिप्पणी, नाम, स्थान, आदि) का उपयोग करें ToLower()। जब "शाब्दिक" के साथ काम करते हैं (उदाहरण के लिए कमांड लाइन तर्क, कस्टम व्याकरण, स्ट्रिंग्स जो कि एनम आदि होना चाहिए) का उपयोग करते हैं ToLowerInvariant()

उदाहरण:

= गलत तरीके से उपयोग करनाToLowerInvariant =

तुर्की में, DIŞ"बाहर" का dişअर्थ है और "दांत" का मतलब है। का उचित निचला आवरण DIŞहै dış। इसलिए, यदि आप ToLowerInvariantगलत तरीके से उपयोग करते हैं, तो आपके पास टर्की में टाइपो हो सकता है।

= गलत तरीके से उपयोग करनाToLower =

अब दिखावा आप एक एसक्यूएल पार्सर लिख रहे हैं। कहीं न कहीं आपके पास ऐसा कोड होगा जो दिखता है:

if(operator.ToLower() == "like")
{
  // Handle an SQL LIKE operator
}

जब आप संस्कृतियाँ बदलते हैं तो SQL व्याकरण नहीं बदलता है। एक फ्रेंचमैन SÉLECTIONNEZ x DE booksइसके बजाय नहीं लिखता है SELECT X FROM books। हालांकि, काम करने के लिए उपरोक्त कोड के लिए, एक तुर्की व्यक्ति को लिखना होगा SELECT x FROM books WHERE Author LİKE '%Adams%'(राजधानी के ऊपर डॉट को नोट करना, लगभग देखना असंभव है)। यह आपके तुर्की उपयोगकर्ता के लिए काफी निराशाजनक होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.