2012-10-22 16 views
8

संभव डुप्लिकेट शामिल हैं:
JavaScript: string containsयदि चर

मैं एक पोस्टकोड चर है और जब पोस्टकोड बदल गया है एक अलग चर में कोई स्थान जोड़ना जे एस का उपयोग करना चाहते/में प्रवेश किया। तो उदाहरण के लिए यदि एसटी 6 दर्ज किया गया है तो मैं स्टोक नॉर्थ को दर्ज करना चाहता हूं।

मुझे किसी भी तरह से चलाने के लिए अगर कोई कथन करने की आवश्यकता है उदा।

if(code contains ST1) 
{ 
    location = stoke central; 
} 
else if(code contains ST2) 
{ 
    location = stoke north; 
} 

आदि ...

मैं इस बारे में कैसे जाना होगा? यह जांच नहीं कर रहा है कि 'कोड' एक मान के बराबर है लेकिन यदि इसमें कोई मान है, तो मुझे लगता है कि यह मेरी समस्या है।

+0

यहां स्ट्रिंग में स्ट्रिंग की जांच करने के सबसे सामान्य तरीकों के लिए एक बेंचमार्क है: http://jsben.ch/#/o6KmH – EscapeNetscape

उत्तर

27

आप चाहते हो सकता है indexOf

if (code.indexOf("ST1") >= 0) { ... } 
else if (code.indexOf("ST2") >= 0) { ... } 

यह जाँच करता है, तो containsstring चर code में कहीं है। एक स्ट्रिंग होने के लिए code की आवश्यकता है। यदि आप यह समाधान केस-असंवेदनशील होना चाहते हैं तो आपको मामले को String.toLowerCase() या String.toUpperCase() के साथ बदलना होगा।

तुम भी तरह

switch (true) { 
    case (code.indexOf('ST1') >= 0): 
     document.write('code contains "ST1"'); 
     break; 
    case (code.indexOf('ST2') >= 0): 
     document.write('code contains "ST2"');   
     break;   
    case (code.indexOf('ST3') >= 0): 
     document.write('code contains "ST3"'); 
     break;   
    }​ 
+0

ग्रेट सामान, धन्यवाद। –

8

आप एक regex का उपयोग कर सकते हैं:

if (/ST1/i.test(code)) 
+1

+1 अच्छा और आसान केस असंवेदनशीलता –

1

सबसे तेज़ तरीका एक switch बयान के साथ काम करता है, तो एक स्ट्रिंग एक और स्ट्रिंग की जाँच करने के सकता है indexOf उपयोग कर रहा है:

if (code.indexOf('ST1') !== -1) { 
    // string code has "ST1" in it 
} else { 
    // string code does not have "ST1" in it 
} 
+0

अनुक्रमणिका अगर स्ट्रिंग नहीं मिलती है तो '-1' रिटर्न देता है। यदि स्ट्रिंग 'ST1' से शुरू होती है तो यह' 0' वापस आ जाएगी। यह जवाब गलत है। आप जांचते हैं कि 'कोड' 'ST1' से शुरू होता है या नहीं, अगर यह' कोड' में कहीं भी * निहित * है। – clentfort

+0

@clentfort धन्यवाद, मस्तिष्क फार्ट। – jbabey

2

if (code.indexOf("ST1")>=0) { location = "stoke central"; }

0

यदि आपके पास इनमें से बहुत से जांच करने के लिए आप मैपिंग की एक सूची स्टोर करना चाहते हैं और बस उस पर लूप करना चाहते हैं, बजाय एक गुच्छा ओ एफ अगर/अन्य बयान। कुछ ऐसा:

var CODE_TO_LOCATION = { 
    'ST1': 'stoke central', 
    'ST2': 'stoke north', 
    // ... 
}; 

function getLocation(text) { 
    for (var code in CODE_TO_LOCATION) { 
    if (text.indexOf(code) != -1) { 
     return CODE_TO_LOCATION[code]; 
    } 
    } 
    return null; 
} 

इस तरह आप आसानी से अधिक कोड/स्थान मैपिंग जोड़ सकते हैं। और यदि आप एक से अधिक स्थानों को संभालना चाहते हैं तो आप केवल पहले को लौटने की बजाय फ़ंक्शन में स्थानों की एक सरणी बना सकते हैं।

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