আমি একটি স্ট্রিং আছে "MySites"
। আমি My
এবং এর মাঝে একটা জায়গা রাখতে চাই Sites
।
আমি কীভাবে jQuery বা জাভাস্ক্রিপ্টে এটি করতে পারি?
আমি একটি স্ট্রিং আছে "MySites"
। আমি My
এবং এর মাঝে একটা জায়গা রাখতে চাই Sites
।
আমি কীভাবে jQuery বা জাভাস্ক্রিপ্টে এটি করতে পারি?
উত্তর:
আপনি প্রতিটি বড় হাতের অক্ষরের আগে কেবল একটি স্থান যুক্ত করতে পারেন এবং শীর্ষস্থানীয় এবং পিছনের স্থানগুলি ছাঁটাই করতে পারেন
s = s.replace(/([A-Z])/g, ' $1').trim()
/([A-Z]+)/g
। + এটি নিশ্চিত করবে যে আপনি যথাসম্ভব একটানা একাধিক মূলধন অক্ষর মিলেছেন।
এটি একটি ছোট ছোট অক্ষরের প্রতিটি উপস্থিতি এবং তারপরে একটি বড় হাতের অক্ষর অনুসরণ করবে এবং তাদের মধ্যে একটি স্থান সন্নিবেশ করবে:
s = s.replace(/([a-z])([A-Z])/g, '$1 $2');
বিশেষ ক্ষেত্রে যখন পরপর ২ টি বড় বড় অক্ষর আসে (উদাহরণস্বরূপ: এটিআইএসএটিস্ট) নীচে অতিরিক্ত কোড যুক্ত করে:
s = s.replace(/([A-Z])([A-Z])/g, '$1 $2');
"RunThisSQLQuery"
।
আমি বর্তমানে গৃহীত উত্তরে সামান্য সম্পাদনার পরামর্শ দিতে পারি:
function insertSpaces(string) {
string = string.replace(/([a-z])([A-Z])/g, '$1 $2');
string = string.replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')
return string;
}
এই যে মানে:
ACROText -> ACRO Text
UserNameTest -> User Name Test
আপনি ডিবি কলামের নাম নিয়ে কাজ করে যা কিছুটা বেশি কার্যকর হতে পারে (এবং কিছু জিনিসের জন্য সংক্ষিপ্ত শব্দ ব্যবহার করছেন)
এটি প্রতিটি বড় বড় অক্ষরের মাঝে একটি স্থান সন্নিবেশ করানো উচিত যা পূর্বে কোনও বড় অক্ষরের আগে ছিল না।
var myString = "MySites"
var newString = "";
var wasUpper = false;
for (var i = 0; i < myString.length; i++)
{
if (!wasUpper && myString[i] == myString.toUpperCase()[i])
{
newString = newString + " ";
wasUpper = true;
}
else
{
wasUpper = false;
}
newString = newString + myString[i];
}
newString
আপনি চান মান আছে। এছাড়াও, আপনি যদি রেগেক্স ব্যবহার করে আপনার কোডটি ছোট করতে চান তবে জাভাস্ক্রিপ্ট উটকেস থেকে নিয়মিত ফর্ম পর্যন্ত নীচের কোডটি ব্যবহার করতে পারেন
"thisStringIsGood"
// insert a space before all caps
.replace(/([A-Z])/g, ' $1')
// uppercase the first character
.replace(/^./, function(str){ return str.toUpperCase(); })
নিম্ন কেসটি খুঁজে পাওয়ার জন্য রেজেক্স - আপার কেস সীমানা তারপরে একটি স্থান সন্নিবেশ করান
<div id='x'>ThisIsMySites</div>
$('#x').text( $('#x').text().replace(/([a-z])([A-Z])/g, "$1 $2") );
এখানে কয়েকটি উত্তরের ভিত্তিতে একটি স্ট্রিংকে একটি শিরোনামের ক্ষেত্রে রূপান্তর করতে আমি এখানেই শেষ করেছি:
str = str
.replace(/(_|-)/g, ' ')
.trim()
.replace(/\w\S*/g, function(str) {
return str.charAt(0).toUpperCase() + str.substr(1)
})
.replace(/([a-z])([A-Z])/g, '$1 $2')
.replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')
এখানে একটি জেএসফিডেল রয়েছে যেখানে আপনি আপনার স্ট্রিংটি এটি আপনার প্রয়োজনগুলি পূরণ করে কিনা তা পরীক্ষা করতে পারেন: https://jsfiddle.net/thomastasa/5236dv8t/85/
উদাহরণ:
আপনি String#split()
মূলধনী বর্ণমালা ( [A-Z]
) এবং তারপরে Array#join()
একটি স্থান সহ অ্যারের জন্য ব্যবহার করতে পারেন এবং এগিয়ে যেতে পারেন :
let stringCamelCase = "MySites";
let string = stringCamelCase.split(/(?=[A-Z])/).join(" ");
console.log(string)
অথবা, স্ট্রিং অবজেক্ট ফাংশন হিসাবে:
String.prototype.cC2SC = function() {
return this.split(/(?=[A-Z])/).join(" ");
}
console.log("MyCamelCase".cC2SC());
একটি একক রেজেক্সে প্রতিস্থাপন করুন (ছাঁটাই বা যোগদান ছাড়া) যা কোনও অক্ষরকে কেবল অক্ষর [a-z]
বা না হিসাবে অনুমতি দেয় [A-Z]
।
const str = "MySites";
str.replace(/(?<!^)([A-Z])/, " $1"); // -> "My Sites"
আপনি (?<!^)
এখানে পিছনে চেহারা সম্পর্কে আরও চেক করতে পারেন ।