2012-02-03 8 views
136

मैं ',' अल्पविराम से पहले सब कुछ निकालने का प्रयास कर रहा हूं। मैं जावास्क्रिप्ट या jQuery में यह कैसे करूँ? मैंने कोशिश की और काम नहीं कर रहा ..निर्दिष्ट वर्ण से पहले सबस्ट्रिंग को कैसे पकड़ें jQuery या जावास्क्रिप्ट

1345 albany street, Bellevue WA 42344 

मैं बस सड़क का पता पकड़ना चाहता हूं।

var streetaddress= substr(addy, 0, index(addy, '.')); 
+16

'addy.split (',', 1) [0]' – antak

+2

@antak: एक उत्तर के रूप में पोस्ट करें, कोई टिप्पणी नहीं। – ArtOfWarfare

उत्तर

233
var streetaddress= addy.substr(0, addy.indexOf(',')); 

हालांकि यह सबसे अच्छा नहीं है निश्चित में जगह के लिए जगह प्रत्येक विधि क्या करता है (mozilla developer network उस पर बेहतर है) w3schools.com सिंटैक्स के लिए आपको पेश करने के लिए अच्छा है।

+140

देखें संरक्षक होने की कोई आवश्यकता नहीं है। – naomi

+16

यदि स्ट्रिंग की खोज की जा रही है तो यह काम नहीं करेगा, इसमें खोज चरित्र का उदाहरण नहीं है। यह एक खाली स्ट्रिंग वापस कर देगा। –

+0

प्रति डेविड जी, देखें https://jsfiddle.net/13pkp1xn/ –

5
var streetaddress = addy.substr(0, addy.indexOf('.')); 

(। आप एक javascript tutorial के माध्यम से पढ़ना चाहिए, खास तौर पर String functions के बारे में हिस्सा)

19

इस प्रयास करें:

streetaddress.substring(0, streetaddress.indexOf(',')); 
+0

मेरे उत्तर के लिए कोई प्यार क्यों नहीं? यदि यह उत्तर सही है http://stackoverflow.com/questions/3745515/what-is-the-difference-between-substr-and-substring मेरा उत्तर स्वीकार्य उत्तर के रूप में सटीक है, और 0 के अलावा इंडेक्स शुरू करने के लिए काम करता है –

+3

जैसा ऊपर डेविड जी द्वारा इंगित किया गया है, संभवतः क्योंकि यदि कोई अल्पविराम नहीं है तो यह काम नहीं करता है।ओपी ने निहित किया होगा कि स्ट्रिंग हमेशा एक अल्पविराम होगा, लेकिन कई मामलों में डेलीमीटर की गारंटी नहीं है। Https://jsfiddle.net/13pkp1xn/ –

12

आप इसे कम बस का उपयोग पसंद है, तो एक RegExp:

var streetAddress = /[^,]*/.exec(addy)[0]; 
+1

क्या इसमें कुछ गड़बड़ है इस? – flu

+4

+1, मुझे लगता है कि यह एक उचित तरीका है, लेकिन मैंने इस से संकेत लिया और 'addy.split (',', 1) [0]' – antak

+3

के साथ चला गया यह विधि उदाहरण के लिए बहुत अच्छी है अगर आप विभाजित करना चाहते हैं सफेद स्थान पर:/[^ \ s] * /। exec (...) – NuSkooler

3

आप मूल स्ट्रिंग अछूता वापस जाने के लिए अगर यह खोज वर्ण नहीं हैं तो आप एक गुमनाम समारोह (एक बंद) का उपयोग कर सकते हैं:

var streetaddress=(function(s){var i=s.indexOf(','); 
    return i==-1 ? s : s.substr(0,i);})(addy); 

यह अधिक सामान्य बनाया जा सकता है:

var streetaddress=(function(s,c){var i=s.indexOf(c); 
    return i==-1 ? s : s.substr(0,i);})(addy,','); 
89
var streetaddress = addy.split(',')[0]; 
+1

स्विंग्स और राउंडअबाउट्स - यह अनावश्यक रूप से एक सरणी बनाता है, लेकिन कम से कम काम करता है यदि स्टॉप कैरेक्टर स्ट्रिंग – Alnitak

+1

में प्रदर्शन तुलना के लिए नहीं है, देखें: https://jsperf.com/street-array-vs-substr – FrankerZ

6

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

s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(',')); 
इस मामले में

हम तथ्य यह है कि substr का दूसरा तर्क लंबाई है का इस्तेमाल करते हैं, और कहा कि हम जानते हैं कि हमारे सबस्ट्रिंग 0.

पर शुरू कर रहा है शीर्ष जवाब एक सामान्य समाधान नहीं है अवांछित व्यवहार की वजह से यदि स्ट्रिंग में वह वर्ण नहीं है जिसे आप ढूंढ रहे हैं।

यदि आप एक सामान्य मामले में सही व्यवहार चाहते हैं, इस विधि या डेविड जी की विधि, नहीं शीर्ष जवाब

regex और विभाजन तरीकों में भी काम करेंगे उपयोग करें, लेकिन इस विशिष्ट समस्या के लिए overkill कुछ हद तक धीमी/हो सकता है।

10
//split string into an array and grab the first item 

var streetaddress = addy.split(',')[0]; 

इसके अलावा, मैं बेहतर पठनीयता के लिए ऊंट-केस (streetAddress) के साथ अपने चर नामकरण की अनुशंसा करता हूं।

+0

यह इंडेक्स का उपयोग कर विधि से बेहतर है, परिदृश्य में जहां कोई अल्पविराम वर्ण नहीं है –

+0

आप कुछ प्रोसेसिंग को सहेज सकते हैं और पहले विभाजन पर रोक सकते हैं " "https://stackoverflow.com/a/22386366/601386 में एक टिप्पणी के रूप में पोस्ट किया गया @antak का उपयोग करके पाया गया:' addy.split (',', 1) [0] '। Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split देखें। – flu

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