मेरे पास एक तार है "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');
विशेष मामलों के लिए जब 2 लगातार बड़े अक्षर आते हैं (उदाहरण: ThisIsATest) नीचे अतिरिक्त कोड जोड़ें:
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
यदि आप db कॉलम नामों के साथ काम कर रहे हैं, तो यह थोड़ा अधिक उपयोगी हो सकता है (और कुछ चीजों के लिए समरूपी का उपयोग कर रहे हैं)
इसमें प्रत्येक कैपिटल लेटर के बीच एक स्पेस डालना चाहिए जो कि कैपिटल लेटर से पहले नहीं था।
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
आप चाहते हैं मूल्य होगा इसके अलावा, यदि आप regex का उपयोग करके अपने कोड को छोटा करना चाहते हैं, तो आप जावास्क्रिप्ट कैमलस से रेगुलर फॉर्म में निम्न कोड का उपयोग कर सकते हैं
"thisStringIsGood"
// insert a space before all caps
.replace(/([A-Z])/g, ' $1')
// uppercase the first character
.replace(/^./, function(str){ return str.toUpperCase(); })
निचले मामले को खोजने के लिए regex - ऊपरी मामले की सीमा फिर एक स्थान डालें
<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')
यहाँ एक JSField है जहाँ आप यह देखने के लिए अपनी स्ट्रिंग का परीक्षण कर सकते हैं कि क्या यह आपकी आवश्यकताओं को पूरा करता है: 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());