আমি এমন কোনও অনুকূলিত রেজেক্স পাইনি যা আমাকে প্রথম সাদা স্থানের ইভেন্টে স্ট্রিং বেস করে বিভক্ত করে:
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] খালি থাকবে, তবে আপনি কেবল এটিকে উপেক্ষা করতে পারেন।
রেফারেন্সের জন্য:
জর্জের সমাধানটি দুর্দান্ত, তবে স্ট্রিংটিতে কোনও শ্বেত স্পেস না থাকলে ব্রেক হয়ে যায়। যদি আপনার স্ট্রিংগুলিতে হোয়াইটস্পেস না রাখার সুযোগ থাকে তবে .স্প্লিট এবং এরকম গ্রুপগুলি ক্যাপচার করার জন্য এটি নিরাপদ:
str_1 = str.split(/\s(.+)/)[0]; //everything before the first space
str_2 = str.split(/\s(.+)/)[1]; //everything after the first space
আপনি কেবল প্রথম ঘটনাটি প্রতিস্থাপন করতে .rep مقام ব্যবহার করতে পারেন,
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"
তবে আমি প্রথম উদাহরণটি পরামর্শ দিই।
ওয়ার্কিং ডেমো: জেসবিন
যখনই ক্লাসের তালিকা থেকে বা ক্লাসের নাম বা আইডির একটি অংশ থেকে আমার ক্লাস নেওয়া দরকার, আমি সর্বদা স্প্লিট () ব্যবহার করি তবে তা হয় বিশেষভাবে অ্যারে সূচকের সাথে পাওয়া যায় বা প্রায়শই আমার ক্ষেত্রে পপ () পেতে হয় প্রথমটি পেতে সর্বশেষ উপাদান বা শিফ্ট ()।
এই উদাহরণটি ডিভের ক্লাসগুলি "গ্যালারী_148 ইউআই-বাছাইযোগ্য" পেয়েছে এবং গ্যালারী আইডি 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;
}