2011-01-14 7 views
5

मैं स्ट्रिंग वाई भीतर सबस्ट्रिंग एक्स से मेल खाते हैं और मैच के लिए एक्स की जरूरत की जरूरत के बाद तो वाईजावास्क्रिप्ट स्ट्रिंग से मेल खाते हैं और सब कुछ पट्टी यह

में यह सब कुछ के बाद पट्टी

उत्तर

11

कोड

var text1 = "abcdefgh"; 
var text2 = "cde"; 

alert(text1.substring(0, text1.indexOf(text2))); 
alert(text1.substring(0, text1.indexOf(text2) + text2.length)); 

पहले चेतावनी खोज टेक्स्ट शामिल नहीं होता, दूसरा एक है।

स्पष्टीकरण

मैं कोड की दूसरी पंक्ति का तरीका बताएंगे।

text1.substring(0, text1.indexOf(text2) + text2.length)) 

 

text1.substring(startIndex, endIndex) 

कोड का यह टुकड़ा पहला वर्ण जा रहा है ENDINDEX, 0 को STARTINDEX से हर चरित्र लेता है। पाठ में

text1.indexOf(text2) 

यह टेक्स्ट 2 का पहला उदाहरण के चरित्र स्थिति देता है, 1.

text2.length 

यह रिटर्न: तो हमारे कोड में, हम 0 (प्रारंभ) से खोज और को खत्म हो टेक्स्ट 2 की लंबाई, इसलिए यदि हम इसे हमारे लौटे हुए मूल्य में शामिल करना चाहते हैं, तो हम इसे लौटाए गए इंडेक्स की लंबाई में जोड़ देंगे, जिससे हमें रिटर्न परिणाम मिल जाएगा!

4

आप उपयोग कर सकते हैं करने के लिए substring और indexOf:

Y.substring(0, Y.indexOf(X) + X.length)) 

DEMO

बेशक आप पहले से परीक्षण करना चाहिए कि क्या एक्स वाई

में है
0
var index = y.indexOf(x); 
y = index >= 0 ? y.substring(0, y.indexOf(x) + x.length) : y; 
0
var X = 'S'; 
var Y = 'TEST'; 
if(Y.indexOf(X) != -1){ 
var pos = parseInt(Y.indexOf(X)) + parseInt(X.length); 
var str = Y.substring(0, pos); 
Y = str; 
} 
document.write(Y); 
+0

यहां 'parseInt' का उपयोग करने की आवश्यकता नहीं है। 'इंडेक्सऑफ' और 'लम्बाई' हमेशा पूर्णांक लौटाते हैं। –

+0

@ फ़ेलिक्स क्लिंग: सिर्फ parseInt() का उपयोग करने की मेरी आदत के कारण, जब मैं कोई अंकगणितीय परिचालन करता हूं –

3

आप वाई में सिर्फ एक्स से मेल खाते हैं और केवल एक्स वापस जाने के लिए देख रहे हैं, मैं match उपयोग करने का सुझाव चाहते हैं।

var x = "treasure"; 
var y = "There's treasure somewhere in here."; 
var results = y.match(new RegExp(x)); // -> ["treasure"] 

results या तो एक खाली सरणी है या x की पहली आवृत्ति शामिल होंगे।

यदि आप y में सबकुछ चाहते हैं और x की पहली घटना सहित, केवल नियमित अभिव्यक्ति को थोड़ा संशोधित करें।

var results2 = y.match(new RegExp(".*" + x)); // -> ["There's treasure"] 
+0

स्ट्रिंग में दो बार "खजाना" होने पर मैं कैसे कर सकता हूं और मैं आखिरी बार मैच करना चाहता हूं? – user2284570

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