दिलचस्प पोस्ट
एक्लिप्स में ब्रेडक्रंब को अक्षम कैसे करें PHP: एक stdClass वस्तु की गणना करें हेरोकी में डीबी को खाली कैसे करें ओरेकल में किसी तालिका से कॉलम नाम कैसे प्राप्त हो सकते हैं? जावास्क्रिप्ट ट्रिपल अधिक से अधिक JComboBox तालिका संपादक को कैसे बनाने के लिए एक साधारण जेसीम्बोबॉक्स का डिज़ाइन है? log4j: सॉकेट अपैपर का उपयोग कैसे करें? स्विफ्ट में एक UIButton के गोल शीर्ष कोनों मुख्य () में कॉलिंग मुख्य () में सी में शुद्ध सीएसएस पतन / div विस्तृत करें विशेषता और संपत्ति के बीच अंतर क्या है? बाहरी URL से एक कस्टम GAS फ़ंक्शन को कॉल करें Android पर WebView और कुकीज़ स्वतः पूर्णतया अक्षम किए बिना क्रोम में फॉर्म ऑटोफ़िल अक्षम करें टेक्सबॉक्स के माध्यम से लूप

स्ट्रिंग को जावास्क्रिप्ट के साथ शीर्षक केस में कनवर्ट करें

क्या स्ट्रिंग को शीर्षक केस में बदलने का एक आसान तरीका है? इग john smith बन जाता है मैं जॉन Resig के समाधान की तरह जटिल कुछ नहीं देख रहा हूँ, बस (उम्मीद है) किसी एक तरह का या दो लाइनर

वेब के समाधान से एकत्रित समाधान "स्ट्रिंग को जावास्क्रिप्ट के साथ शीर्षक केस में कनवर्ट करें"

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

 function toTitleCase(str) { return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); } 

ग्रेग डीन के कार्य का अनुकूलन करने के लिए थोड़ा अधिक सुरुचिपूर्ण तरीका:

 String.prototype.toProperCase = function () { return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); }; 

इसे इस तरह कॉल करें:

 "pascal".toProperCase(); 

अपने नियंत्रणों में पाठ-रूपांतरण सीएसएस शैली को लागू करने का प्रयास करें

उदाहरण: (text-transform: capitalize);

केवल जब जरूरी हो, तब केवल एक जेएस दृष्टिकोण का उपयोग करें

यह मेरा कार्य है जो शीर्षक के मामले में धर्मान्तरित होता है, लेकिन छोटे अक्षरों के रूप में अपरकेस और नाबालिग शब्दों के रूप में परिभाषित परिवर्णी शब्द भी संरक्षित करता है:

 String.prototype.toTitleCase = function() { var i, j, str, lowers, uppers; str = this.replace(/([^\W_]+[^\s-]*) */g, function(txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); // Certain minor words should be left lowercase unless // they are the first or last words in the string lowers = ['A', 'An', 'The', 'And', 'But', 'Or', 'For', 'Nor', 'As', 'At', 'By', 'For', 'From', 'In', 'Into', 'Near', 'Of', 'On', 'Onto', 'To', 'With']; for (i = 0, j = lowers.length; i < j; i++) str = str.replace(new RegExp('\\s' + lowers[i] + '\\s', 'g'), function(txt) { return txt.toLowerCase(); }); // Certain words such as initialisms or acronyms should be left uppercase uppers = ['Id', 'Tv']; for (i = 0, j = uppers.length; i < j; i++) str = str.replace(new RegExp('\\b' + uppers[i] + '\\b', 'g'), uppers[i].toUpperCase()); return str; } 

उदाहरण के लिए:

 "TO LOGIN TO THIS SITE and watch tv, please enter a valid id:".toTitleCase(); // Returns: "To Login to This Site and Watch TV, Please Enter a Valid ID:" 

यहां मेरा संस्करण है, आईएमओ यह समझने में आसान और सुरुचिपूर्ण है

 var str = "foo bar baz" str.split(' ') .map(w => w[0].toUpperCase() + w.substr(1).toLowerCase()) .join(' ') // returns "Foo Bar Baz" 

यदि ऊपर दिए गए समाधानों में इस्तेमाल किए गए रेगेक्स आपको भ्रमित कर रहे हैं, तो इस कोड को आज़माएं:

 function titleCase(str) { return str.split(' ').map(function(val){ return val.charAt(0).toUpperCase() + val.substr(1).toLowerCase(); }).join(' '); } 

यह केवल एक शब्द स्ट्रिंग के लिए काम करता है, लेकिन मुझे इसकी आवश्यकता है:

 'string'.replace(/^[az]/, function (x) {return x.toUpperCase()}) // String 

JSFiddle: https://jsfiddle.net/simo/gou2uhLm/

सिर्फ अगर आप उन भराव शब्दों के बारे में चिंतित हैं, तो आप हमेशा उस कार्य को बता सकते हैं जो न कि कैपिटल करना है।

 /** * @param String str The text to be converted to titleCase. * @param Array glue the words to leave in lowercase. */ var titleCase = function(str, glue){ glue = (glue) ? glue : ['of', 'for', 'and']; return str.replace(/(\w)(\w*)/g, function(_, i, r){ var j = i.toUpperCase() + (r != null ? r : ""); return (glue.indexOf(j.toLowerCase())<0)?j:j.toLowerCase(); }); }; 

इससे आपको मदद मिलने की आशा है।

केवल संदर्भ के लिए regex का उपयोग किए बिना:

 String.prototype.toProperCase = function() { var words = this.split(' '); var results = []; for (var i=0; i < words.length; i++) { var letter = words[i].charAt(0).toUpperCase(); results.push(letter + words[i].slice(1)); } return results.join(' '); }; 'john smith'.toProperCase(); 

मैंने इस फ़ंक्शन को बनाया है, जो "मैकडॉनल्ड" या "मैकडॉनल्ड" या "ओ'टोले" या "डी ओराज़ियो" जैसे अंतिम नामों को संभालने में सक्षम है। हालांकि यह जर्मन या डच नामों को "वैन" या "वॉन" के साथ नहीं रखता है जो अक्सर कम-मामले में होते हैं … मेरा मानना ​​है कि "डी" अक्सर कम-केस भी होता है जैसे "रॉबर्ट डी नीरो" इन्हें अभी भी संबोधित करना होगा

 function toProperCase(s) { return s.toLowerCase().replace( /\b((m)(a?c))?(\w)/g, function($1, $2, $3, $4, $5) { if($2){return $3.toUpperCase()+$4+$5.toUpperCase();} return $1.toUpperCase(); }); } 

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

 String.prototype.toProperCase = function(){ return this.toLowerCase().replace(/(^[az]| [az]|-[az])/g, function($1){ return $1.toUpperCase(); } ); }; 

उदाहरण

 var str = 'john smith'; str.toProperCase(); 
 var toMatch = "john w. smith"; var result = toMatch.replace(/(\w)(\w*)/g, function (_, i, r) { return i.toUpperCase() + (r != null ? r : ""); } ) 

काम करने के लिए लगता है … उपरोक्त के साथ परीक्षण किया गया, "जल्दी-भूरा, लोमड़ी / छलांग / ^ ^ ^ ¡आलसी! कुत्ता …" और "सी: / प्रोग्राम फ़ाइलें / कुछ विक्रेता / उनका दूसरा आवेदन / ए file1.txt "।

यदि आप 2 एन डी की जगह 2 की जगह चाहते हैं, तो आप /([az])(\w*)/g बदल सकते हैं।

पहला रूप सरलीकृत किया जा सकता है:

 function toTitleCase(toTransform) { return toTransform.replace(/\b([az])/g, function (_, initial) { return initial.toUpperCase(); }); } 

आप तुरंत स्ट्रिंग को toLowerCase कर सकते हैं, और फिर बस प्रत्येक शब्द का पहला अक्षर toLowerCase लिए। बहुत सरल 1 लाइनर बन जाता है:

 function titleCase(str) { return str.toLowerCase().replace(/\b(\w)/g, s => s.toUpperCase()); } console.log(titleCase('iron man')); console.log(titleCase('iNcrEdible hulK')); 

इनमें से अधिकांश उत्तर शब्द सीमा metacharacter (\ b) का उपयोग करने की संभावना को अनदेखा करते हैं। इसका उपयोग करने वाले ग्रेग डीन के उत्तर का एक छोटा संस्करण:

 function toTitleCase(str) { return str.replace(/\b\w/g, function (txt) { return txt.toUpperCase(); }); } 

जिम-बॉब जैसी हाइफ़नेटेड नामों के लिए भी काम करता है

डायरेक्ट्रिक्स का समर्थन करने के लिए /\S+/g का उपयोग करें:

 function toTitleCase(str) { return str.replace(/\S+/g, str => str.charAt(0).toUpperCase() + str.substr(1).toLowerCase()); } console.log(toTitleCase("a city named örebro")); // A City Named Örebro 

यह मेरा कार्य है जो जोरदार वर्णों का ध्यान रखता है (फ्रेंच के लिए महत्वपूर्ण है!) और जो अपवादों को कम करता है उसे बंद करने पर / बंद कर सकता है उम्मीद है की वो मदद करदे।

 String.prototype.titlecase = function(lang, withLowers = false) { var i, string, lowers, uppers; string = this.replace(/([^\s:\-'])([^\s:\-']*)/g, function(txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }).replace(/Mc(.)/g, function(match, next) { return 'Mc' + next.toUpperCase(); }); if (withLowers) { if (lang == 'EN') { lowers = ['A', 'An', 'The', 'At', 'By', 'For', 'In', 'Of', 'On', 'To', 'Up', 'And', 'As', 'But', 'Or', 'Nor', 'Not']; } else { lowers = ['Un', 'Une', 'Le', 'La', 'Les', 'Du', 'De', 'Des', 'À', 'Au', 'Aux', 'Par', 'Pour', 'Dans', 'Sur', 'Et', 'Comme', 'Mais', 'Ou', 'Où', 'Ne', 'Ni', 'Pas']; } for (i = 0; i < lowers.length; i++) { string = string.replace(new RegExp('\\s' + lowers[i] + '\\s', 'g'), function(txt) { return txt.toLowerCase(); }); } } uppers = ['Id', 'R&d']; for (i = 0; i < uppers.length; i++) { string = string.replace(new RegExp('\\b' + uppers[i] + '\\b', 'g'), uppers[i].toUpperCase()); } return string; } 

"लेवेक्स 200" समाधान को लेना मैंने इस साधारण समाधान को बनाया है जो "w" को स्थान या "वा" के साथ शुरू होता है जो कि शब्द आरंभ करते हैं, लेकिन अतिरिक्त मध्यवर्ती रिक्त स्थान को हटाने में सक्षम नहीं हैं।

 "SOFÍA vergara".toLowerCase().replace(/\b(\s\w|^\w)/g, function (txt) { return txt.toUpperCase(); }); 

यदि आप अपने कोड में तीसरे पक्ष के पुस्तकालयों का उपयोग कर सकते हैं तो रद्दी में हमारे लिए सहायक कार्य है।

https://lodash.com/docs/4.17.3#startCase

 _.startCase('foo bar'); // => 'Foo Bar' _.startCase('--foo-bar--'); // => 'Foo Bar' _.startCase('fooBar'); // => 'Foo Bar' _.startCase('__FOO_BAR__'); // => 'FOO BAR' 

जैसे जॉन रेसीग के समाधान के रूप में पूर्ण रूप से चित्रित किया गया, लेकिन एक-लाइनर के रूप में: ( इस गिथूब प्रोजेक्ट पर आधारित)

 function toTitleCase(e){var t=/^(a|an|and|as|at|but|by|en|for|if|in|of|on|or|the|to|vs?\.?|via)$/i;return e.replace(/([^\W_]+[^\s-]*) */g,function(e,n,r,i){return r>0&&r+n.length!==i.length&&n.search(t)>-1&&i.charAt(r-2)!==":"&&i.charAt(r-1).search(/[^\s-]/)<0?e.toLowerCase():n.substr(1).search(/[AZ]|\../)>-1?e:e.charAt(0).toUpperCase()+e.substr(1)})}; console.log( toTitleCase( "ignores mixed case words like iTunes, and allows AT&A and website.com/address etc..." ) ); 

साधारण कैशिंग के साथ अधिक प्रदर्शन करने वाला संस्करण सरल बनाएं।

  var TITLE_CASE_LOWER_MAP = { 'a': 1, 'an': 1, 'and': 1, 'as': 1, 'at': 1, 'but': 1, 'by': 1, 'en':1, 'with': 1, 'for': 1, 'if': 1, 'in': 1, 'of': 1, 'on': 1, 'the': 1, 'to': 1, 'via': 1 }; // LEAK/CACHE TODO: evaluate using LRU. var TITLE_CASE_CACHE = new Object(); toTitleCase: function (title) { if (!title) return null; var result = TITLE_CASE_CACHE[title]; if (result) { return result; } result = ""; var split = title.toLowerCase().split(" "); for (var i=0; i < split.length; i++) { if (i > 0) { result += " "; } var word = split[i]; if (i == 0 || TITLE_CASE_LOWER_MAP[word] != 1) { word = word.substr(0,1).toUpperCase() + word.substr(1); } result += word; } TITLE_CASE_CACHE[title] = result; return result; }, 

ईएस 6

 str.split(' ').map((s) => (s.slice(0, 1).toUpperCase() + s.slice(1).toLowerCase())).join(' ') 

अन्य

 str.split(' ').map(function (s) { return s.slice(0, 1).toUpperCase() + s.slice(1).toLowerCase(); }).join(' ') 

हम में से जो नियमित अभिव्यक्ति (एलओएल) से डरे हुए हैं:

 function titleCase(str) { var words = str.split(" "); for ( var i = 0; i < words.length; i++ ) { var j = words[i].charAt(0).toUpperCase(); words[i] = j + words[i].substr(1); } return words.join(" "); } 

मुझे लगता है कि सरल सीएसएस उपयोग कर रहा है।

 function format_str(str) { return '<span style="text-transform: capitalize">'+ str +'</span>'; } 

यह कोशिश करो, सबसे छोटा रास्ता:

 str.replace(/(^[az])|(\s+[az])/g, txt => txt.toUpperCase()); 

यह कम नहीं है, लेकिन स्कूल में हाल ही में काम पर मैंने जो कुछ किया वह है:

 var myPoem = 'What is a jQuery but a misunderstood object?' //What is a jQuery but a misunderstood object? --> What Is A JQuery But A Misunderstood Object? //code here var capitalize = function(str) { var strArr = str.split(' '); var newArr = []; for (var i = 0; i < strArr.length; i++) { newArr.push(strArr[i].charAt(0).toUpperCase() + strArr[i].slice(1)) }; return newArr.join(' ') } var fixedPoem = capitalize(myPoem); alert(fixedPoem); 

ग्रेग डीन के समाधान के प्रोटोटाइप समाधान:

 String.prototype.capitalize = function() { return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); } 

यह फ्रीकोडैकैप की बोनफ़र "टाइटल केस" के लिए मेरे समाधान पर आधारित है, जिसकी आवश्यकता है कि आपको पहले दिए गए स्ट्रिंग को सभी लोअर केस में कनवर्ट करना होगा और फिर प्रत्येक अक्षर को ऊपरी केस में स्थानांतरित करना होगा।

Regex का उपयोग किए बिना:

 function titleCase(str) { return str.toLowerCase().split(' ').map(function(val) { return val.replace(val[0], val[0].toUpperCase()); }).join(' '); } 

समस्या के लिए मेरी सरल और आसान संस्करण:

  function titlecase(str){ var arr=[]; var str1=str.split(' '); for (var i = 0; i < str1.length; i++) { var upper= str1[i].charAt(0).toUpperCase()+ str1[i].substr(1); arr.push(upper); }; return arr.join(' '); } titlecase('my name is suryatapa roy'); 

मैं अपना खुद का जवाब जोड़ना चाहता था क्योंकि मुझे toTitleCase फ़ंक्शन के लिए एक मजबूत काम की आवश्यकता होती है, जो यहां सूचीबद्ध खाते के व्याकरण के नियमों (Google अनुशंसित अनुच्छेद) में जरूरी है। ऐसे कई नियम हैं जो इनपुट स्ट्रिंग की लंबाई पर निर्भर करते हैं। नीचे फ़ंक्शन + इकाई परीक्षण हैं

यह समारोह भी सफेद स्थान को समेकित करता है और विशेष वर्णों को हटा देता है (अपनी आवश्यकताओं के लिए regex संशोधित करें)

toTitleCase फ़ंक्शन

 const toTitleCase = (str) => { const articles = ['a', 'an', 'the']; const conjunctions = ['for', 'and', 'nor', 'but', 'or', 'yet', 'so']; const prepositions = [ 'with', 'at', 'from', 'into','upon', 'of', 'to', 'in', 'for', 'on', 'by', 'like', 'over', 'plus', 'but', 'up', 'down', 'off', 'near' ]; // The list of spacial characters can be tweaked here const replaceCharsWithSpace = (str) => str.replace(/[^0-9a-z&/\\]/gi, ' ').replace(/(\s\s+)/gi, ' '); const capitalizeFirstLetter = (str) => str.charAt(0).toUpperCase() + str.substr(1); const normalizeStr = (str) => str.toLowerCase().trim(); const shouldCapitalize = (word, fullWordList, posWithinStr) => { if ((posWithinStr == 0) || (posWithinStr == fullWordList.length - 1)) { return true; } return !(articles.includes(word) || conjunctions.includes(word) || prepositions.includes(word)); } str = replaceCharsWithSpace(str); str = normalizeStr(str); let words = str.split(' '); if (words.length <= 2) { // Strings less than 3 words long should always have first words capitalized words = words.map(w => capitalizeFirstLetter(w)); } else { for (let i = 0; i < words.length; i++) { words[i] = (shouldCapitalize(words[i], words, i) ? capitalizeFirstLetter(words[i], words, i) : words[i]); } } return words.join(' '); } 

शुद्धता सुनिश्चित करने के लिए यूनिट टेस्ट

 import { expect } from 'chai'; import { toTitleCase } from '../../src/lib/stringHelper'; describe('toTitleCase', () => { it('Capitalizes first letter of each word irrespective of articles, conjunctions or prepositions if string is no greater than two words long', function(){ expect(toTitleCase('the dog')).to.equal('The Dog'); // Capitalize articles when only two words long expect(toTitleCase('for all')).to.equal('For All'); // Capitalize conjunctions when only two words long expect(toTitleCase('with cats')).to.equal('With Cats'); // Capitalize prepositions when only two words long }); it('Always capitalize first and last words in a string irrespective of articles, conjunctions or prepositions', function(){ expect(toTitleCase('the beautiful dog')).to.equal('The Beautiful Dog'); expect(toTitleCase('for all the deadly ninjas, be it so')).to.equal('For All the Deadly Ninjas Be It So'); expect(toTitleCase('with cats and dogs we are near')).to.equal('With Cats and Dogs We Are Near'); }); it('Replace special characters with space', function(){ expect(toTitleCase('[wolves & lions]: be careful')).to.equal('Wolves & Lions Be Careful'); expect(toTitleCase('wolves & lions, be careful')).to.equal('Wolves & Lions Be Careful'); }); it('Trim whitespace at beginning and end', function(){ expect(toTitleCase(' mario & Luigi superstar saga ')).to.equal('Mario & Luigi Superstar Saga'); }); it('articles, conjunctions and prepositions should not be capitalized in strings of 3+ words', function(){ expect(toTitleCase('The wolf and the lion: a tale of two like animals')).to.equal('The Wolf and the Lion a Tale of Two like Animals'); expect(toTitleCase('the three Musketeers And plus ')).to.equal('The Three Musketeers and Plus'); }); }); 

कृपया ध्यान दें कि मैं प्रदान की गई तारों से बहुत से विशेष वर्णों को निकाल रहा हूं। आपको अपनी परियोजना की आवश्यकताओं को पूरा करने के लिए regex को ज़ूम करने की आवश्यकता होगी।

Title Case Function करने के लिए प्रभावी कार्यात्मक प्रोग्रामिंग तरीका

एक्सपेलिन संस्करण

 function toTitleCase(input){ let output = input .split(' ') // 'HOw aRe YOU' => ['HOw' 'aRe' 'YOU'] .map((letter) => { let firstLetter = letter[0].toUpperCase() // H , a , Y => H , A , Y let restLetters = letter.substring(1).toLowerCase() // Ow, Re, OU => ow, re, ou return firstLetter + restLetters // conbine together }) .join(' ') //['How' 'Are' 'You'] => 'How Are You' return output } 

कार्यान्वयन संस्करण

 function toTitleCase(input){ return input .split(' ') .map(i => i[0].toUpperCase() + i.substring(1).toLowerCase()) .join(' ') } toTitleCase('HoW ARe yoU') // reuturn 'How Are You'