मुझे एक अनुकूलित रेगेक्स नहीं मिला जिसने मुझे एक स्ट्रिंग को पहले सफेद स्थान में विभाजित किया।
var str="72 tocirah sneab";
मुझे पाना होगा:
[
"72",
"tocirah sneab",
]
मुझे एक अनुकूलित रेगेक्स नहीं मिला जिसने मुझे एक स्ट्रिंग को पहले सफेद स्थान में विभाजित किया।
var str="72 tocirah sneab";
मुझे पाना होगा:
[
"72",
"tocirah sneab",
]
जवाबों:
यदि आप केवल अंतरिक्ष चरित्र (और टैब या अन्य व्हाट्सएप वर्ण नहीं) के बारे में परवाह करते हैं और केवल पहली जगह से पहले और पहली जगह के बाद सब कुछ के बारे में परवाह करते हैं, तो आप इसे इस तरह से एक नियमित अभिव्यक्ति के बिना कर सकते हैं:
str.substr(0,str.indexOf(' ')); // "72"
str.substr(str.indexOf(' ')+1); // "tocirah sneab"
ध्यान दें कि यदि कोई स्थान नहीं है, तो पहली पंक्ति एक खाली स्ट्रिंग लौटाएगी और दूसरी पंक्ति संपूर्ण स्ट्रिंग लौटाएगी। सुनिश्चित करें कि वह व्यवहार है जिसे आप उस स्थिति में चाहते हैं (या वह स्थिति उत्पन्न नहीं होगी)।
जावास्क्रिप्ट लुकबाइंड का समर्थन नहीं करता है, इसलिए splitयह संभव नहीं है। matchकाम करता है:
str.match(/^(\S+)\s(.*)/).slice(1)
एक और चाल:
str.replace(/\s+/, '\x01').split('\x01')
कैसा रहेगा:
[str.replace(/\s.*/, ''), str.replace(/\S+\s/, '')]
और क्यों नहीं
reverse = function (s) { return s.split('').reverse().join('') }
reverse(str).split(/\s(?=\S+$)/).reverse().map(reverse)
या हो सकता है
re = /^\S+\s|.*/g;
[].concat.call(re.exec(str), re.exec(str))
2019 अपडेट : ES2018 के अनुसार, लुकबाइंड समर्थित हैं:
str = "72 tocirah sneab"
s = str.split(/(?<=^\S+)\s/)
console.log(s)
str.match(/^(\S+)\s(.*)/).slice(1) एक स्ट्रिंग के लिए अभ्यस्त कार्य जिसमें कोई स्थान नहीं है
ES6 में आप भी कर सकते हैं
let [first, ...second] = str.split(" ")
second = second.join(" ")
खेल के लिए देर से, मुझे पता है लेकिन ऐसा करने के लिए एक बहुत ही सरल तरीका लगता है:
const str = "72 tocirah sneab";
const arr = str.split(/ (.*)/);
console.log(arr);
यह arr[0]साथ "72"और arr[1]साथ छोड़ देगा "tocirah sneab"। ध्यान दें कि गिरफ्तार [2] खाली हो जाएगा, लेकिन आप इसे अनदेखा कर सकते हैं।
सन्दर्भ के लिए:
जॉर्ज का समाधान अच्छा है, लेकिन टूट जाता है अगर स्ट्रिंग में कोई व्हाट्सएप नहीं है। यदि आपके तार में व्हाट्सएप न होने का मौका है, तो यह .split और जैसे समूहों को कैप्चर करने के लिए सुरक्षित है।
str_1 = str.split(/\s(.+)/)[0]; //everything before the first space
str_2 = str.split(/\s(.+)/)[1]; //everything after the first space
आप केवल पहली घटना को बदलने के लिए .replace का उपयोग कर सकते हैं,
str = str.replace(' ','<br />');
बाहर छोड़ना / जी।
बस स्ट्रिंग को एक सरणी में विभाजित करें और उन हिस्सों को गोंद करें जो आपको एक साथ चाहिए। यह दृष्टिकोण बहुत लचीला है, यह कई स्थितियों में काम करता है और इसके बारे में तर्क करना आसान है। साथ ही आपको केवल एक फ़ंक्शन कॉल की आवश्यकता है।
arr = str.split(' '); // ["72", "tocirah", "sneab"]
strA = arr[0]; // "72"
strB = arr[1] + ' ' + arr[2]; // "tocirah sneab"
वैकल्पिक रूप से, यदि आप चेरी को चुनना चाहते हैं, तो आपको उस स्ट्रिंग से सीधे क्या चाहिए जो आप कुछ इस तरह से कर सकते हैं:
strA = str.split(' ')[0]; // "72";
strB = str.slice(strA.length + 1); // "tocirah sneab"
या इस तरह:
strA = str.split(' ')[0]; // "72";
strB = str.split(' ').splice(1).join(' '); // "tocirah sneab"
हालांकि मैं पहला उदाहरण सुझाता हूं।
कार्यशील डेमो: jsbin
जब भी मुझे कक्षाओं की सूची या वर्ग नाम या आईडी के एक भाग से एक वर्ग प्राप्त करने की आवश्यकता होती है, मैं हमेशा विभाजन का उपयोग करता हूं () या तो इसे विशेष रूप से सरणी सूचकांक के साथ प्राप्त करता हूं या, मेरे मामले में सबसे अधिक बार, पॉप () पाने के लिए। पहला पाने के लिए अंतिम तत्व या पारी ()।
इस उदाहरण को div की कक्षाएं "Gallery_148 ui-Sortable" मिलती हैं और गैलरी id 148 लौटाती है।
var galleryClass = $(this).parent().prop("class"); // = gallery_148 ui-sortable
var galleryID = galleryClass.split(" ").shift(); // = gallery_148
galleryID = galleryID.split("_").pop(); // = 148
//or
galleryID = galleryID.substring(8); // = 148 also, but less versatile
मुझे यकीन है कि इसे कम लाइनों में संकुचित किया जा सकता है लेकिन मैंने इसे पठनीयता के लिए विस्तारित किया।
मुझे थोड़ा अलग परिणाम चाहिए था।
मैं पहला शब्द चाहता था, और उसके बाद क्या आया - भले ही वह खाली था।
str.substr(0, text.indexOf(' ') == -1 ? text.length : text.indexOf(' '));
str.substr(text.indexOf(' ') == -1 ? text.length : text.indexOf(' ') + 1);
इसलिए यदि इनपुट है onewordआप प्राप्त onewordऔर ''।
इनपुट है one word and some moreआप प्राप्त oneऔर word and some more।
मुझे यकीन नहीं है कि अन्य सभी उत्तर इतने जटिल क्यों हैं, जब आप यह सब एक पंक्ति में कर सकते हैं, साथ ही साथ अंतरिक्ष की कमी को भी संभाल सकते हैं।
एक उदाहरण के रूप में, आइए एक नाम के पहले और "अन्य" घटक प्राप्त करें:
let [first, last] = 'John Von Doe'.split(/ (.*)/);
console.log({ first, last });
[first, last] = 'Surma'.split(/ (.*)/);
console.log({ first, last });
निम्न फ़ंक्शन हमेशा वाक्य को 2 तत्वों में विभाजित करेगा । पहले तत्व में केवल पहला शब्द होगा और दूसरे तत्व में अन्य सभी शब्द होंगे (या यह एक रिक्त स्ट्रिंग होगी)।
var arr1 = split_on_first_word("72 tocirah sneab"); // Result: ["72", "tocirah sneab"]
var arr2 = split_on_first_word(" 72 tocirah sneab "); // Result: ["72", "tocirah sneab"]
var arr3 = split_on_first_word("72"); // Result: ["72", ""]
var arr4 = split_on_first_word(""); // Result: ["", ""]
function split_on_first_word(str)
{
str = str.trim(); // Clean string by removing beginning and ending spaces.
var arr = [];
var pos = str.indexOf(' '); // Find position of first space
if ( pos === -1 ) {
// No space found
arr.push(str); // First word (or empty)
arr.push(''); // Empty (no next words)
} else {
// Split on first space
arr.push(str.substr(0,pos)); // First word
arr.push(str.substr(pos+1).trim()); // Next words
}
return arr;
}