निर्दिष्ट वर्ण jQuery या जावास्क्रिप्ट से पहले सबस्ट्रिंग को कैसे पकड़ें


238

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

1345 albany street, Bellevue WA 42344

मैं सिर्फ सड़क का पता हथियाना चाहता हूं।

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

29
addy.split(',', 1)[0]
एंटैक ant

जवाबों:


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

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


22
यदि खोजे जा रहे स्ट्रिंग में खोज वर्ण का उदाहरण नहीं है तो यह काम नहीं करेगा। यह एक खाली स्ट्रिंग लौटाएगा।
डेविड जी

1
substrअनुशंसित नहीं है; substringइसके बजाय developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… का
बेन क्रेसी

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

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

2
प्रदर्शन तुलना के लिए, देखें: jsperf.com/street-array-vs-substr
Goodbye StackExchange

2
पिछला टिप्पणी लिंक मृत है: /
elki42

29

इसे इस्तेमाल करे:

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

1
मेरे जवाब के लिए कोई प्यार क्यों? यदि यह उत्तर सही है stackoverflow.com/questions/3745515/… मेरा उत्तर स्वीकृत उत्तर की तरह सटीक है, और
0.20 के

8
जैसा कि ऊपर डेविड जी द्वारा बताया गया है, संभवतः क्योंकि यह काम नहीं करता है यदि कोई अल्पविराम नहीं है। ओपी ने निहित किया कि स्ट्रिंग में हमेशा अल्पविराम होता है, लेकिन कई उदाहरणों में सीमांकक की गारंटी नहीं है। देखें jsfiddle.net/13pkp1xn
ख़ुद-एतमाद क्यू Bangwhistle

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

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

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


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

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

सरणी डिकंस्ट्रक्शन का उपयोग करना, आप कर सकते हैं: const [streetAddress,] = addy.split(','); यह उन मामलों के लिए सहायक होता है जब आप एक से अधिक मान चाहते हैं, जैसे: let [callerIdName, callerId] = callerIdString.split('<'); (मूल callerIdString प्रारूप MCMULLIN, PARKER <+ 1XXXXXXXXXX>)
पार्कर -कोड

1
क्या यह उत्तर ठीक वैसा ही नहीं है जैसा उत्तर 30 अक्टूबर, 2015 को पोस्ट किया गया था?
kojow7

15

यदि आपको यह पसंद है तो बस एक RegExp का उपयोग करें :

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

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

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

12

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

s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));

इस मामले में हम इस तथ्य का उपयोग करते हैं कि दूसरा तर्क substrएक लंबाई है, और हमें पता है कि हमारा विकल्प 0 पर शुरू हो रहा है।

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

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

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


8

आप भी इस्तेमाल कर सकते हैं shift()

var streetaddress = addy.split(',').shift();

एमडीएन वेब डॉक्स के अनुसार:

shift()विधि को हटा पहले एक सरणी और रिटर्न कि निकाले गए तत्व से तत्व। यह विधि सरणी की लंबाई बदलती है।

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift


[0] के साथ इंडेक्सिंग .shift () का उपयोग करने से अधिक कुशल है
मिस्ट्रीपैंकेक ५'१18


4

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

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,',');


2

आप regex का उपयोग कर सकते हैं क्योंकि यह आपको स्ट्रिंग देगा यदि यह आवश्यकताओं से मेल खाता है। कोड कुछ इस तरह होगा:

const address = "1345 albany street, Bellevue WA 42344";
const regex = /[1-9][0-9]* [a-zA-Z]+ [a-zA-Z]+/;
const matchedResult = address.match(regex);

console.log(matchedResult[0]); // This will give you 1345 albany street.

तो कोड को तोड़ने के लिए। [1-9][0-9]*मूल रूप से इसका मतलब है कि पहली संख्या शून्य नहीं हो सकती है और इसके बीच एक संख्या होनी चाहिए 1-9और अगली संख्या किसी भी संख्या से 0-9हो सकती है और शून्य या अधिक बार हो सकती है क्योंकि कभी-कभी संख्या सिर्फ एक अंक होती है और फिर यह एक स्थान से मेल खाती है। [a-zA-Z]मूल रूप से सभी बड़े अक्षरों को छोटे अक्षरों से मेल खाता है और एक या अधिक बार होना होता है और यह दोहराया जाता है।


0

इससे पहले कि आप सब्सट्रेट प्राप्त करने के लिए एज़ल का उपयोग कर सकते हैं :

str = 'This is how we go to the place!'

az.get_everything_before(str, 'place')

परिणाम : इस तरह से हम

उपरांत

str = 'This is how we go to the place!'

az.get_everything_after(str, 'go')

परिणाम : जगह के लिए!

और बीच में :

str = 'This is how we go to the place!'

az.get_everything_between(str, 'how', 'place')

परिणाम : हम

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.