2013-07-29 7 views
5

मेरे पास string की जांच करने के बारे में कोई प्रश्न है।पता लगाएं कि किसी स्ट्रिंग में कोई तालिका है

stringckeditor से है इसलिए उपयोगकर्ता कुछ भी इनपुट कर सकते हैं।

variable नाम htmlData है और यह की तरह है:

test here<br /> 
<table border="1" cellpadding="1" cellspacing="1" style="width: 500px;"> 
    <tbody> 
     <tr> 
      <td> 
       111</td> 
      <td> 
       222</td> 
     </tr> 
     <tr> 
      <td> 
       333</td> 
      <td> 
       444</td> 
     </tr> 
     <tr> 
      <td> 
       555</td> 
      <td> 
       666</td> 
     </tr> 
    </tbody> 
</table> 
<br /> 
second test 

मैं उपयोगकर्ता एक table संरचना को जोड़ने अगर पता लगाने के लिए चाहते हैं और मैं

if(htmlData.indexOf('</table>').length > -1){ 
      console.log('table detected') 
     } 

की कोशिश की है, लेकिन यह कुछ भी दिखाई नहीं देता मेरा console। क्या कोई इस पर संकेत दे सकता है?

बहुत बहुत धन्यवाद!

उत्तर

8

String. indexOf() एक आदिम सांख्यिक मान देता है, विशेष रूप से:

the index within the calling String object of the first occurrence of the specified value, starting the search at fromIndex or -1 if the value is not found.

ये पुरातन कोई गुण, यानी है .: length

if(htmlData.indexOf('</table>').length > -1){ 
    console.log('table detected') 
}

तो, बस अपने कोड से .length निकालें: -

if(htmlData.indexOf('</table>') > -1){ 
     console.log('table detected') 
} 

या आप का उपयोग कर किसी भी टैग के लिए मिल सकता है jQuery -

if(htmlData.indexOf('</table>') > -1){ 
    console.log('table detected') 
} 
+2

भगवान ... मैं क्या सोच रहा हूँ की तरह की जाँच करेगा .... सभी +1 – FlyingCat

+0

आप हो सकता है यह भी कम 'अगर (~ htmlData.indexOf ('')) {...} ' – oleq

3

उपयोग

var el = $("<div>"+htmlData+"</div>"); 
if(el.find("table").length>0){ 
    console.log("it contains table"); 
} 

यह किसी भी टैग, कक्षा, आईडी के लिए काम करेगा या किसी भी सीएसएस चयनकर्ता।

var el = $(htmlData); 
if(el.find(".some-class").length>0){ 
    console.log("it contains some-class"); 
} 
+0

मेरा विश्वास है कि आपका दूसरा सुझाव काम करने के लिए आपको इसे एक कंटेनर 'var el = $ ('

'+htmlData+'
') में लपेटने की आवश्यकता होगी;' –

+0

I लगता है कि यह लपेटने के बिना काम करेगा 'div' के साथ। –

+0

आपको 'असहज त्रुटि: सिंटेक्स त्रुटि, अपरिचित अभिव्यक्ति' प्राप्त होगी http://jsfiddle.net/bplumb/CcxWV/ –

1

क्यों। लम्बाई?

if(htmlData.indexOf('</table>') > -1){ 
     console.log('table detected') 
    } 

यह ठीक काम करना चाहिए।

if(/<table>/i.test(htmlData)); 
3

परिभाषित नहीं है आप इसे उपयोग कर सकते हैं देता है। जैसा कि "इंडेक्स" नाम इंगित करता है, यह आपको अनुक्रमणिका देता है। इसके अलावा: यदि उपयोगकर्ता अंत टैग में प्रवेश करता है तो केवल जांच क्यों करें? आपको स्टार्ट टैग की भी जांच करनी चाहिए। और तात्कालिक क्यों की तरह एक रेगुलर एक्सप्रेशन से उपयोग नहीं कर:

/<table>.*?<\/table>/.test(htmlData) 

दोनों के लिए परीक्षण करने के लिए ?.

CAVE! यह RegEx यह जांच नहीं कर रहा है कि उपयोगकर्ता ने वैध HTML-table-टैग दर्ज किया है या नहीं। यह < तालिका> resp की घटना के लिए सिर्फ एक बेवकूफ जांच है। </तालिका>

+0

लेकिन यह ओपी की स्ट्रिंग (htmlData) –

+0

हाँ का संदर्भ नहीं देता है, हाँ, आप सही ली टेलर हैं, मैं उचित प्रश्न – Guerra

+0

ठीक से नहीं पढ़ता, या तो अद्यतन या हटाएं। धन्यवाद –

1

indexOf कोई संपत्ति length है: indexOf सूचकांक (-1) न मिलने पर, नहीं तो एक सरणी लंबाई संपत्ति

+0

क्या आप _CAVEAT_ के लिए कम से कम _CAVE_ का उपयोग कर रहे हैं? मैंने पहले कभी नहीं सुना है। – canon

+0

उम .. मेरा लैटिन व्याकरण थोड़ा धूलदार है। लेकिन जहां तक ​​मुझे याद है कि यह एक vocativ है: गुफा कैनेम! - कुत्ते को देखो! चेतावनी का अर्थ कुछ समान है: "आप कर सकते हैं" या "आपको करना है" या "किसी को करना है"। मेरे लैटिन व्याकरण ज्ञान को जर्मन से अंग्रेजी में अनुवाद करने का तरीका नहीं पता;) –

1

यह उसी उत्तर के संग्रह में जोड़ने के लिए मूर्खतापूर्ण होगा, इसलिए match का उपयोग करके इस विधि के बारे में, यह आपको बताएगा कि उस स्ट्रिंग में कितनी तालियां हैं।

var string = htmlData.replace(/\s/g, ""); 
// Trim all whitespace.. 

var matches = string.match(/<\/table>/g); 
// Will return 1 for your code and 2 for the demo 

तो फिर तुम यह इतना

if(matches > 0) { 
    // There is at least 1 table here 
} 

Demo

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