2013-08-22 4 views
15

मान लें कि मेरे पास 2 स्ट्रिंग हैं। पहली स्ट्रिंग x = "abc" है और दूसरा एक y = "एबीसी" है। जब मैं निम्नलिखित कोड सी # में लिखता हूं:दो तारों और उनके ऊपरी और निचले केस संकेतों की तुलना करने का सबसे अच्छा तरीका

if(x == y) 

या

if(x.Equals(y)) 

वापसी मान true.How मैं उनके अपर और लोअर केस की जांच कर सकते है?

+0

यहाँ इस विषय पर कुछ अधिक जानकारी है: http://stackoverflow.com/questions/444798/case-insensitive-containsstring – Niklas

+1

क्या आपका मतलब है और यदि 'एक्स =" abc "' और 'y =" एबीसी " ', फिर' (x == y) 'वापस लौटना चाहिए ** झूठी ** ?? –

+0

हाँ। मैं केस संवेदनशीलता की जांच करना चाहता हूं। – daidai

उत्तर

0

प्रयास करें:

केस संवेदनशील:

String.Equals (a,b) 

केस संवेदी

string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase); 
23

वापसी मान है नहींtrue लेकिन false नेट के बाद से मामले डिफ़ॉल्ट रूप से संवेदनशील है।

String.Equals से:

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

इस ऑपरेटर का उपयोग बराबर विधि है, जिसका अर्थ comparands संदर्भ और मूल्य समानता का एक संयोजन के लिए परीक्षण कर रहे हैं कार्यान्वित किया जाता है:

== ही के लिए String.Equality operator कॉल Equals के बाद से सच है । यह ऑपरेटर सामान्य तुलना करता है।

यह insensitively मामले की तुलना करेंगे:

bool equals = x.Equals(y , StringComparison.OrdinalIgnoreCase); 

तुम सिर्फ अगर एक चरित्र ऊपरी है या लोअर केस आप इन तरीकों का उपयोग कर सकते जानना चाहते हैं:

bool isUpperChar = Char.IsUpper("ABC"[0]); // yes 
bool isLowerChar = Char.IsLower("ABC"[0]); // no 
0

Pleun के रूप में लिखा था , या आप

StringComparer.CurrentCultureIgnoreCase.Equals(a, b) 

ध्यान दें कि हम CurrentCulture ऑर्डरिंग विधि का उपयोग कर रहे हैं।कभी-कभी आप अलग आदेश तरीकों का उपयोग करना होगा

(हर भाषा एक अलग तरीके से पत्र का आदेश देता है) आप सुनिश्चित करें कि आप केवल ASCII वर्ण आदेश दे रहे हैं तो

StringComparer.OrdinalIgnoreCase.Equals(a, b) 

एक छोटे से तेजी से होता है कर रहे हैं (या सामान्य तरीके में आप ToUpper() या ToLower() दो स्ट्रिंग परिवर्तित उनकी तुलना करने के है OrdinalIgnoreCase)

सामान्य तौर पर चुन सकते हैं जहां गलत (और धीमी गति से, आप उनकी तुलना करने से पहले उन्हें पूरी तरह से परिवर्तित करने के लिए, जबकि शायद वे कर रहे हैं, क्योंकि) पहली चरित्र में अलग ... गलत है क्योंकि तुर्की में चार i

http://codeblog.jonskeet.uk/2009/11/02/omg-ponies-aka-humanity-epic-fail/

4

सबसे पहले हैं, तो आप तय करना चाहिए कि क्या आप में culture dependent या स्वतंत्र तरह से तार की तुलना (जैसे रूसी संस्कृति पत्र "ई" और "Ё" में अक्सर वही माना जाता है; फिनिश "वी" और "डब्ल्यू" का इलाज करने के समान होता है।)। इसके बाद आपको यह चुनना चाहिए कि केस ("ए" बनाम "ए") का उपयोग या उपयोग नहीं करना चाहिए।

क्रमवार (संस्कृति स्वतंत्र) की तुलना:

// Ignore case comparison 
Boolean equals = String.Equals(x, y, StringComparison.OrdinalIgnoreCase); 
// Case comparison 
Boolean equals = String.Equals(x, y, StringComparison.Ordinal); 

वर्तमान संस्कृति तुलना:

// Current culture, ignore case comparison 
Boolean equals = String.Equals(x, y, StringComparison.CurrentCulture); 
// Current culture, case comparison 
Boolean equals = String.Equals(x, y, StringComparison.CurrentCultureIgnoreCase); 

स्पष्ट संस्कृति तुलना: तो वहाँ 6 संभव तुलना कर रहे हैं

CultureInfo culture = new CultureInfo("Ru-ru"); // <- Or whatever you want 

// Explicit culture, ignore case comparison 
Boolean equals = culture.CompareInfo.Compare(x, y, CompareOptions.IgnoreCase); 
// Explicit culture, case comparison 
Boolean equals = culture.CompareInfo.Compare(x, y, CompareOptions.None); 
+0

int की तरह विधि वापसी सी की तुलना करें। यदि कोई कथन नीचे दिखेगा तो बूल न करें: यदि (culture.CompareInfo.Compare (PaymentReq.IslemTipi, "ödeme", तुलनाऑप्शन। इग्नोरकेस) == 0) –

1

यह है एक और विकल्प आप कोशिश कर सकते हैं।

if(string.Compare("a", "A", true) == 0) 
संबंधित मुद्दे