2012-12-28 13 views
15

मैं यह पता लगाने की कोशिश कर रहा हूं कि .text.contains का उपयोग करते हुए केस को अनदेखा करते समय एक स्ट्रिंग को कैसे जांचें।string.text.contains का उपयोग करते समय अनदेखा कैसे करें?

अभी मैं ऐसा करते हैं तो खड़ा के रूप में:

Dim myhousestring As String = "My house is cold" 
    If txt.Text.Contains(myhousestring) Then 
    Messagebox.Show("Found it") 
    End If 

यह केवल एक मैच वापस आ जाएगी अगर यह ठीक उसी मामला है। तो यदि उपयोगकर्ता ने लिखा "मेरा घर ठंडा है", तो यह एक मैच नहीं होगा।

मैं यह कैसे कर सकता हूं? यदि यह संभव नहीं है तो मैं शायद अनदेखा के बजाय रेगेक्स का उपयोग कर सकता हूं। किसी भी सहायता की सराहना की जाएगी।

उत्तर

30

Microsoft के अनुसार आप IndexOf बजाय Contains साथ तार में केस-संवेदी खोज कर सकते हैं। तो जब IndexOf विधि का परिणाम -1 से अधिक मान देता है, तो इसका मतलब है कि दूसरी स्ट्रिंग पहले की एक सबस्ट्रिंग है।

Dim myhousestring As String = "My house is cold" 
If txt.Text.IndexOf(myhousestring, 0, StringComparison.CurrentCultureIgnoreCase) > -1 Then 
    Messagebox.Show("Found it") 
End If 

तुम भी StringComparison के अन्य केस-संवेदी वेरिएंट उपयोग कर सकते हैं।

+0

आह, यह वही है जो मैं ढूंढ रहा था। मुझे पता था कि उनकी एक और स्ट्रिंग विधि थी जिसका उपयोग तारों की तुलना करने के लिए किया जा सकता था। बहुत बहुत धन्यवाद। मैं इसकी सराहना करता हूं। – user1632018

9

मैं एक vb.net प्रोग्रामर नहीं हूं, लेकिन Microsoft के अनुसार, आप स्ट्रिंग विधियों ToUpper() या ToLower() का उपयोग करके टेक्स्ट का लोअरकेस/अपरकेस मान प्राप्त कर सकते हैं। इसके बाद आप "my house is cold" या "MY HOUSE IS COLD" के साथ तुलना कर सकते हैं।

Dim myhousestring As String = "MY HOUSE IS COLD" 
If txt.Text.ToUpper.Contains(myhousestring) Then 
    Messagebox.Show("Found it") 
End If 
+0

पाया मैं इस समाधान बेहतर पसंद है। –

+0

यह मुद्दों w/वैश्वीकरण विशेष रूप से w/तुर्की i का कारण बनता है I मैं सावधान रहूंगा/इस विधि। – jt000

0

इस प्रकार मैंने स्ट्रिंग बनाने की मेरी समस्या का समाधान किया। मामले केस असंवेदनशील हो जाते हैं।

Dim s as string = "My HoUsE iS cOlD".ToUpper 

If s.Contains("MY HOUSE IS COLD") Then Exit Sub 

मेरे विशेष मुद्दे के लिए, जिस स्ट्रिंग को मैं जांच रहा था उसे टेक्स्टबॉक्स में रखा गया था।

मुझे उम्मीद है कि इससे मदद मिलती है।

0

या आप इस तरह RegularExpressions का उपयोग कर सकते हैं।

पहले, आयात RegularExpressions:

Dim match As Match = Regex.Match(Textbox1.text,"My house is cold",RegexOptions.IgnoreCase) 
If match.Success Then 
    Msgbox(match.Value) 
End If 
+0

यह एक ओवरकिल – beppe9000

1

निजी तौर पर मैं सिर्फ इस्तेमाल किया:

item.Text.ToLower().Contains("my house is cold") 

तुम सिर्फ और साथ ही अच्छी तरह से इस्तेमाल कर सकते हैं toupper

Imports System.Text.RegularExpressions 

तो इस कोड की कोशिश ।

चेतावनी: यदि आप तुर्की, या अन्य भाषाओं की तुलना कर रहे हैं, तो ToLower() और ToUpper() भी "CultureInfo" के लिए एक विकल्प पैरामीटर लेते हैं, जिससे आप यह सुनिश्चित कर सकते हैं कि अलग-अलग भाषाओं को सही तरीके से संभाला जा सके। आप उपर्युक्त समाधान का उपयोग कर सकते हैं, या आप संस्कृतिइंफो में जोड़ने के लिए माइक्रोसॉफ्ट के टूलावर डॉक्यूमेंटेशन से चरणों का पालन कर सकते हैं, ताकि आप जिस भाषा में हेरफेर करने की कोशिश कर रहे हैं, उस पर निर्भर संदर्भ प्राप्त करने के लिए।

ToLower() with CultureInfo documentation

ToUpper() with CultureInfo documentation

+0

जैसा भी बेहतर लगता है। याप। –

+0

यह मुद्दों w/वैश्वीकरण विशेष रूप से w/तुर्की i का कारण बनता है I मैं सावधान रहूंगा/इस विधि। – jt000

+0

प्रश्न यह उल्लेख नहीं करता है कि इसे तुर्की का समर्थन करने की आवश्यकता है ... विशेष रूप से जब हम पाठ की तुलना अंग्रेजी से कर रहे हैं ... संस्कृति उदासीन तुलना तुर्की से अंग्रेजी में अनुवाद नहीं करने जा रही है, और फिर तुलना करें, यह सिर्फ पात्रों की तुलना करने जा रहा है। –

0

इस बारे में क्या?

Dim UGroup as String = dr.Item(2).ToString().ToUpper 
Dim s as String = ds.Item(1).ToString.ToUpper 

If s.Contains(UGroup) then MsgBox("Well done!") 
Else 
End Sub 

एक ही प्रक्रिया .toLower

साथ
1

मैं इस समस्या .toUpper

साथ उदाहरण के लिए हल किया। "इसमें शामिल" विफल रहता है अगर ईथर तुलना कुछ भी नहीं है।

'अगर हम कुछ ...

If InStr(1, value, search, vbTextCompare) > 0 Then 

Beep 

End If 

               ' 
+0

क्षमा करें यह एक जर्मन शब्द है। कमेटा का मतलब अल्पविराम है। तो "," यह मेरे कोड में केवल आयात है। लेकिन मैंने इसे भ्रम फैलाने के लिए हटा दिया। – xcrookedxedge

+0

डांके फर दास +1! मेरा मतलब है: +1 – xcrookedxedge

+1

के लिए धन्यवाद, ठीक है, ऐसा लगता है कि अब आपको [this] (http://stackoverflow.com/help/privileges/vote-up) के लिए विशेषाधिकार भी है ... इसका उपयोग करें, लेकिन बुद्धिमानी से! –

0

InStr उदाहरण का उपयोग करें:

<Runtime.CompilerServices.Extension> 
Function InStr(s As String, find As String) As Boolean 
    Return s.ToLower.Contains(find.ToLower) 
End Function 
+0

इस मामले में InStr के पहले पैरामीटर की आवश्यकता नहीं है, और आप प्रश्नों के साथ अपने इनपुट पैरामीटर से मिलान करना चाहेंगे। मुझे यह भी नहीं लगता कि यह एमएसडीएन के मुताबिक मामला असंवेदनशील है? – Tom

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