আমি কীভাবে জাভাস্ক্রিপ্ট ব্যবহার করে স্ট্রিংয়ে প্রতিটি শব্দের প্রথম অক্ষরকে বড় করে তুলতে পারি?


108

আমি এমন একটি ফাংশন লেখার চেষ্টা করছি যা প্রতিটি শব্দের প্রথম অক্ষরকে স্ট্রিংয়ে (স্ট্রিংটিকে শিরোনামের ক্ষেত্রে রূপান্তরিত করে) বড় করে তোলে।

উদাহরণস্বরূপ, যখন ইনপুট হয় "I'm a little tea pot", তখন আমি "I'm A Little Tea Pot"আউটপুটটি আশা করি । তবে ফাংশনটি ফিরে আসে "i'm a little tea pot"

এটি আমার কোড:

function titleCase(str) {
  var splitStr = str.toLowerCase().split(" ");

  for (var i = 0; i < splitStr.length; i++) {
    if (splitStr.length[i] < splitStr.length) {
      splitStr[i].charAt(0).toUpperCase();
    }

    str = splitStr.join(" ");
  }

  return str;
}

console.log(titleCase("I'm a little tea pot"));


এটি দেখে মনে হচ্ছে না যে এটি কেবল একটি স্ট্রিংয়ের প্রথম অক্ষরকে মূলধন করে। অথবা আপনি কি বোঝাতে চেয়েছেন যে আপনি স্ট্রিংয়ে থাকা প্রতিটি শব্দকে মূলধন করতে চান।
এপাসকেলো

4
আপনি আপনার ফলাফলের জন্য আপনার মূলধনকে দায়বদ্ধ করছেন না, splitStr[i].charAt(0).toUpperCase();যাচ্ছেন void। আপনাকে যা করতে হবেsplitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);
somethinghere

4
আপনার আগে আমাদের বলা উচিত। কি হল যে ফাংশন সঙ্গে ভুল? প্রত্যাশিত ফলাফলটি কী এবং এর পরিবর্তে কী ফিরে আসে?
ব্যবহারকারী4642212

এই ফাংশনটি দেখে মনে হচ্ছে এটি প্রতিটি শব্দের প্রথম চরিত্রকে বড় করে দেখানোর চেষ্টা করে।
হ্যালসিওন

4
শিরোনামের মতো, আমি স্ট্রিংয়ে প্রতিটি শব্দের প্রথম অক্ষরকে মূলধন করার চেষ্টা করছি। প্রকৃতিতে সহায়ক বলে মনে করা হয় এমন ফোরামে ডাউনভোট বা নেতিবাচকতার আমি কৃতজ্ঞ নই। @ কিছু এখানে - আপনার প্রতিক্রিয়া জন্য আপনাকে ধন্যবাদ।
slurrr

উত্তর:


160

আপনি আবার অ্যারেতে আপনার পরিবর্তনগুলি বরাদ্দ করছেন না, সুতরাং আপনার সমস্ত প্রচেষ্টা ব্যর্থ হয়েছে। এটা চেষ্টা কর:

function titleCase(str) {
   var splitStr = str.toLowerCase().split(' ');
   for (var i = 0; i < splitStr.length; i++) {
       // You do not need to check if i is larger than splitStr length, as your for does that for you
       // Assign it back to the array
       splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);     
   }
   // Directly return the joined string
   return splitStr.join(' '); 
}

document.write(titleCase("I'm a little tea pot"));


@ হ্যালসিওন এটি প্রতিটি শব্দের জন্য কেবল একটি বর্ণের ফলাফল করে।
এপাসকেলো

13
এস 6 এ, আপনি এটি করতে পারেন যা দেখতে কিছুটা সুন্দর লাগছে:myStr.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.substring(1)).join(' ');
প্যাট্রিক মাইকেলসেন

4
পছন্দ করুন আমি যদিও উত্তরটি পরিবর্তন করব না, এটি ২০১৫ সাল থেকে এবং আমি জানি সময়ের পরিবর্তন হয়েছে তবে আমি উত্তরোত্তর ধরে রাখব। এছাড়াও, আমি এটি আর লিখব না :) তবে নিজের অনুমান হিসাবে আমার নিজের উত্তর হিসাবে নির্দ্বিধায় পোস্ট করুন?
কিছু

4
হ্যাঁ, আমি একমত, বর্তমান উত্তরটি ঠিক আছে। আমি কেবল নতুন দর্শকদের রেফারেন্সের জন্য মন্তব্যগুলিতে রেখেছি।
প্যাট্রিক মাইকেলসেন

4
আমি 3 টি প্রতিযোগী ফাংশনের বিপরীতে এই ফাংশনটির একটি মানদণ্ড চালিয়েছি এবং এটি সর্বাধিক পারফরম্যান্স হিসাবে পেয়েছি - সবচেয়ে খারাপ প্রতিযোগীর মৃত্যুর সময় 1/3 এর চেয়ে কম (ক্রোম 73)। jsben.ch/AkHgP
মাইকেল থম্পসন

87

আপনি একটি খুব সহজ জিনিস জটিল করছেন। আপনি এটি আপনার সিএসএসে যুক্ত করতে পারেন:

.capitalize {
    text-transform: capitalize;
}

জাভাস্ক্রিপ্টে, আপনি কোনও উপাদানকে ক্লাস যুক্ত করতে পারেন

 document.getElementById("element").className = "capitalize";

@ পেসম্যাকেলো আমি তোমাকে বুঝতে পারি না, আপনি আমাকে কী বলছেন?
মার্কোস পেরেজ গুড

প্রশ্ন আর এই ডুপ্লিকেট হত হল "কি এই ফাংশন কি ভুল আছে?", stackoverflow.com/questions/1026069/... বা stackoverflow.com/questions/196972/...
Hacketo

4
উত্তরের জন্য ধন্যবাদ, তবে আমি অনুশীলনের জন্য জাভাস্ক্রিপ্ট ব্যবহার করে এটি করার চেষ্টা করছি @ মার্কোসপ্রেজ গুড
স্লুরার

4
হ্যাঁ, এটি আসল বহুমুখী
মার্কোস পেরেজ গুড

4
দুর্ভাগ্যক্রমে কিছু ক্ষেত্রে যদি মান 20 মিমি হয় এবং আপনি মূলধন ব্যবহার করেন এটি 20Mm হবে। কিছু ক্ষেত্রে জাভাস্ক্রিপ্ট একমাত্র পদ্ধতি হতে পারে।
7:52

73

ECMAScript 6 সংস্করণ:

const toTitleCase = (phrase) => {
  return phrase
    .toLowerCase()
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(' ');
};

let result = toTitleCase('maRy hAd a lIttLe LaMb');
console.log(result);


4
আমিও মনে করি আপনি toLowerCase()খুব গোড়াতেই নিখোঁজ রয়েছেন, কেবল যদি ব্যবহারকারী বা স্ট্রিং মিশ্র ক্ষেত্রে থাকে।
আর্চনুব

40

আমি মনে করি এই পথে দ্রুত হওয়া উচিত; কারণ এটি স্ট্রিং বিভক্ত হয় না এবং আবার এতে যোগ দেয়; শুধু রেজেক্স ব্যবহার করছি।

var str = text.replace(/(^\w{1})|(\s{1}\w{1})/g, match => match.toUpperCase());

ব্যাখ্যা :

  1. (^\w{1}): স্ট্রিংয়ের প্রথম চরটি মেলে
  2. |: বা
  3. (\s{1}\w{1}): এক স্থানের পরে আসা একটি চরটি মেলে
  4. g: সব মিল
  5. ম্যাচ => ম্যাচ.টো আপার কেস (): এর সাথে প্রতিস্থাপন ফাংশন নিতে পারে, তাই; উপরের ক্ষেত্রে ম্যাচ সঙ্গে ম্যাচ প্রতিস্থাপন

4
এত ক্লিনার!
ক্লিফ হল

কেন \s{1}? আমি বলব \s+, সুতরাং এটি শব্দের মধ্যে বেশ কয়েকটি স্থানের সাথেও কাজ করে
ক্রিশ্চিয়ান ট্রেনা

আমার ক্ষেত্রে; এটি ঠিক 1 স্থান, এবং হ্যাঁ; এটি কাজ করা উচিত!
নিমেষেরাম

স্ট্রিংগুলি অপরিবর্তনীয়। রেজেক্স হুডের নিচে বিভক্ত হয়ে যোগদান করবে। আসলে এটির চারপাশে কোনও উপায় নেই।
ব্লুগ্রাউন্ডস

22

আপনি যদি কোনও তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করতে পারেন তবে লোডাশ আপনার জন্য একটি সহায়ক ফাংশন রয়েছে।

https://lodash.com/docs/4.17.3# স্টার্টক্যাস

_.startCase('foo bar');
// => 'Foo Bar'

_.startCase('--foo-bar--');
// => 'Foo Bar'

_.startCase('fooBar');
// => 'Foo Bar'

_.startCase('__FOO_BAR__');
// => 'FOO BAR'
<script src="https://cdn.jsdelivr.net/lodash/4.17.3/lodash.min.js"></script>


18

ECMAScript 6 এ, তীর ফাংশনটি ব্যবহার করে একটি লাইন উত্তর:

const captialize = words => words.split(' ').map( w =>  w.substring(0,1).toUpperCase()+ w.substring(1)).join(' ')

4
সুন্দর! আপনি w[0]এটি আরও খাটো করতে ব্যবহার করতে পারেন .. রেইগেক্সের বিপরীতে এটি যে কোনও প্রতীক দ্বারা সহজেই প্রসারিত তবে কেবল এটি নয় space। যাইহোক আমার অর্থ ( [ ", কারণ এই চিহ্নগুলির পরেও অক্ষরগুলি মূলধন করা উচিত। সুতরাং আপনার সমাধানের জন্য ধন্যবাদ!
19:39

15

সংক্ষিপ্ত ওয়ান লাইনার (অত্যন্ত চূড়ান্ত):

 text.replace(/(^\w|\s\w)/g, m => m.toUpperCase());

ব্যাখ্যা:

  • ^\w : স্ট্রিংয়ের প্রথম অক্ষর
  • | : বা
  • \s\w : সাদা স্থানের পরে প্রথম অক্ষর
  • (^\w|\s\w) প্যাটার্ন ক্যাপচার।
  • g পতাকা: সমস্ত উপস্থিতি মেলে।

আপনি যদি নিশ্চিত করতে চান যে বাকিটি ছোট হাতের অক্ষরে রয়েছে:

text.replace(/(^\w|\s\w)(\S*)/g, (_,m1,m2) => m1.toUpperCase()+m2.toLowerCase())

এই দারুণ! RegEx সেরা। আপনি কি এই অংশটি আরও বিশ্লেষণ করতে পারেন? m => m.toUpperCase()
marcin2x4

4
@ marcin2x4 mপ্রথম চরিত্রের সাথে মেলে, তাই এটি প্রথম চরিত্রকে বড় হাতের করে তোলে।
মুরগি

10

ECMAScript 6 সংস্করণ:

title
    .split(/ /g).map(word =>
        `${word.substring(0,1).toUpperCase()}${word.substring(1)}`)
    .join(" ");

6
আমি কেবল এটি এখনই দেখেছি এবং এটি বেশ ঝরঝরে, তবে আমি মনে করি এর " "পরিবর্তে ""কোনও একটির ব্যবহার করে আপনাকে যোগদান করা দরকার , অন্যথায় আপনি একটি বড় শব্দ পাবেন, না?
somethinghere

9

𝗖𝗵𝗮𝗿𝗮𝗰𝘁𝗲𝗿𝘀 𝗦𝗼𝗹𝘂𝘁𝗶𝗼𝗻 𝗙𝗼𝗿 𝗟𝗮𝘁𝗶𝗻-𝗜 𝗖𝗵𝗮𝗿𝗮𝗰𝘁𝗲𝗿𝘀

প্রতিটি অক্ষরের মূলধন পরিবর্তন করতে আপনি কেবল একটি নিয়মিত অভিব্যক্তি ফাংশন ব্যবহার করতে পারেন। ভি 8 জাইএসটি অপ্টিমাইজেশানগুলির সাথে এটি দ্রুত এবং মেমরির দক্ষ হিসাবে প্রমাণিত হওয়া উচিত।

// Only works on Latin-I strings
'tHe VeRy LOOong StRINg'.replace(/\b[a-z]|['_][a-z]|\B[A-Z]/g, function(x){return x[0]==="'"||x[0]==="_"?x:String.fromCharCode(x.charCodeAt(0)^32)})

বা, একটি ফাংশন হিসাবে:

// Only works for Latin-I strings
var fromCharCode = String.fromCharCode;
var firstLetterOfWordRegExp = /\b[a-z]|['_][a-z]|\B[A-Z]/g;
function toLatin1UpperCase(x){ // avoid frequent anonymous inline functions
    var charCode = x.charCodeAt(0);
    return charCode===39 ? x : fromCharCode(charCode^32);
}
function titleCase(string){
    return string.replace(firstLetterOfWordRegExp, toLatin1UpperCase);
}

এই বেঞ্চমার্ক অনুসারে , ক্রোমের পরবর্তী সেরা সমাধানের চেয়ে কোডটি 33% এর বেশি দ্রুত।


𝗗𝗲𝗺𝗼

<textarea id="input" type="text">I'm a little tea pot</textarea><br /><br />
<textarea id="output" type="text" readonly=""></textarea>
<script>
(function(){
    "use strict"
    var fromCode = String.fromCharCode;
    function upper(x){return x[0]==="'"?x:fromCode(x.charCodeAt(0) ^ 32)}
    (input.oninput = function(){
      output.value = input.value.replace(/\b[a-z]|['_][a-z]|\B[A-Z]/g, upper);
    })();
})();
</script>


আপনি নিজের ফাংশনে রিটার্নটি যুক্ত হিসাবে ভুলে গেছেন: ফাংশন অটোক্যাপস (স্ট্রিং) {রিটারিং স্ট্রিং.রেপ্লেস (/ \ বি [অ্যাজ] (0) ^ 32);}); }
আর্চ

@ আর্চি আপনার সংশোধন করার জন্য আপনাকে ধন্যবাদ। আপনার প্রস্তাবিত পরিবর্তন আমি করেছি made
জ্যাক গিফিন



5

এই রুটিনটি হাইস্টেনেটেড শব্দ এবং শব্দকে অ্যাডাস্ট্রোফের সাথে পরিচালনা করবে।

function titleCase(txt) {
    var firstLtr = 0;
    for (var i = 0;i < text.length;i++) {
        if (i == 0 &&/[a-zA-Z]/.test(text.charAt(i)))
            firstLtr = 2;
        if (firstLtr == 0 &&/[a-zA-Z]/.test(text.charAt(i)))
            firstLtr = 2;
        if (firstLtr == 1 &&/[^a-zA-Z]/.test(text.charAt(i))){
            if (text.charAt(i) == "'") {
                if (i + 2 == text.length &&/[a-zA-Z]/.test(text.charAt(i + 1)))
                    firstLtr = 3;
                else if (i + 2 < text.length &&/[^a-zA-Z]/.test(text.charAt(i + 2)))
                    firstLtr = 3;
            }
        if (firstLtr == 3)
            firstLtr = 1;
        else
            firstLtr = 0;
        }
        if (firstLtr == 2) {
            firstLtr = 1;
            text = text.substr(0, i) + text.charAt(i).toUpperCase() + text.substr(i + 1);
        }
        else {
            text = text.substr(0, i) + text.charAt(i).toLowerCase() + text.substr(i + 1);
        }
    }
}

titleCase("pAt o'Neil's");
// returns "Pat O'Neil's";


4

let cap = (str) => {
  let arr = str.split(' ');
  arr.forEach(function(item, index) {
    arr[index] = item.replace(item[0], item[0].toUpperCase());
  });

  return arr.join(' ');
};

console.log(cap("I'm a little tea pot"));

দ্রুত পঠনযোগ্য সংস্করণটি দেখুন বেঞ্চমার্ক http://jsben.ch/k3JVz এখানে চিত্র বর্ণনা লিখুন


4

ES6 সিনট্যাক্স

const captilizeAllWords = (sentence) => {
  if (typeof sentence !== "string") return sentence;
  return sentence.split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(' ');
}


captilizeAllWords('Something is going on here')

বাক্যটিকে মূলধন করা হয়নি তা নিশ্চিত করার জন্য শব্দটি.স্লাইস (1) কে শব্দ.স্লাইস (1) .toLowCC () দিয়ে প্রতিস্থাপন করা উচিত নয় (কেবলমাত্র এটি মূল বাক্যে ছিল)?
muni764

4

আপনি আধুনিক জেএস সিনট্যাক্স ব্যবহার করতে পারেন যা আপনার জীবনকে আরও সহজ করে তুলতে পারে। প্রদত্ত সমস্যার জন্য আমার কোড স্নিপেট এখানে:

const capitalizeString = string => string.split(' ').map(item => item.replace(item.charAt(0), item.charAt(0).toUpperCase())).join(' ');
capitalizeString('Hi! i am aditya shrivastwa')


3

আমি সাধারণত পঠনযোগ্যতার কারণে রিজেক্সপ ব্যবহার না করা পছন্দ করি এবং লুপগুলি থেকে দূরে থাকার চেষ্টা করি। আমি মনে করি এটি এক প্রকার পাঠযোগ্য।

function capitalizeFirstLetter(string) {
    return string && string.charAt(0).toUpperCase() + string.substring(1);
};

3

নীচের ফাংশনটি সমস্ত শব্দের প্রথম অক্ষরকে রূপান্তর করার চেষ্টা করার চেয়ে স্ট্রিংয়ের অন্য কোনও অংশ পরিবর্তন করে না (যেমন রেজেক্স সংজ্ঞা অনুসারে \w+ ) ।

এর অর্থ এটি শব্দের প্রয়োজনীয়ভাবে টাইটলেজকে রূপান্তরিত করে না , তবে প্রশ্নের শিরোনাম যা বলেছে ঠিক তা করে: "স্ট্রিংয়ের প্রতিটি শব্দের প্রথম চিঠি মূলধন করুন - জাভাস্ক্রিপ্ট"

  • স্ট্রিং বিভক্ত করবেন না
  • প্রতিটি শব্দের\w+ সমতুল্য রেজেক্স দ্বারা নির্ধারণ করুন[A-Za-z0-9_]+
    • String.prototype.toUpperCase()কেবলমাত্র প্রতিটি শব্দের প্রথম অক্ষরে ফাংশন প্রয়োগ করুন ।
function first_char_to_uppercase(argument) {
  return argument.replace(/\w+/g, function(word) {
    return word.charAt(0).toUpperCase() + word.slice(1);
  });
}

উদাহরণ:

first_char_to_uppercase("I'm a little tea pot");
// "I'M A Little Tea Pot"
// This may look wrong to you, but was the intended result for me
// You may wanna extend the regex to get the result you desire, e.g., /[\w']+/

first_char_to_uppercase("maRy hAd a lIttLe LaMb");
// "MaRy HAd A LIttLe LaMb"
// Again, it does not convert words to Titlecase

first_char_to_uppercase(
  "ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples"
);
// "ExampleX: CamelCase/UPPERCASE&Lowercase,ExampleY:N0=Apples"

first_char_to_uppercase("…n1=orangesFromSPAIN&&n2!='a sub-string inside'");
// "…N1=OrangesFromSPAIN&&N2!='A Sub-String Inside'"

first_char_to_uppercase("snake_case_example_.Train-case-example…");
// "Snake_case_example_.Train-Case-Example…"
// Note that underscore _ is part of the RegEx \w+

first_char_to_uppercase(
  "Capitalize First Letter of each word in a String - JavaScript"
);
// "Capitalize First Letter Of Each Word In A String - JavaScript"

2019-02-07 সম্পাদনা করুন: আপনি যদি সত্যিকারের টাইটেলিকেস চান (তবে কেবলমাত্র প্রথম অক্ষরের বড় হাতের অক্ষর অন্য সমস্ত ছোট হাতের অক্ষর):

function titlecase_all_words(argument) {
  return argument.replace(/\w+/g, function(word) {
    return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
  });
}

উদাহরণ উভয় দেখায়:

test_phrases = [
  "I'm a little tea pot",
  "maRy hAd a lIttLe LaMb",
  "ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples",
  "…n1=orangesFromSPAIN&&n2!='a sub-string inside'",
  "snake_case_example_.Train-case-example…",
  "Capitalize First Letter of each word in a String - JavaScript"
];
for (el in test_phrases) {
  let phrase = test_phrases[el];
  console.log(
    phrase,
    "<- input phrase\n",
    first_char_to_uppercase(phrase),
    "<- first_char_to_uppercase\n",
    titlecase_all_words(phrase),
    "<- titlecase_all_words\n "
  );
}

// I'm a little tea pot <- input phrase
// I'M A Little Tea Pot <- first_char_to_uppercase
// I'M A Little Tea Pot <- titlecase_all_words

// maRy hAd a lIttLe LaMb <- input phrase
// MaRy HAd A LIttLe LaMb <- first_char_to_uppercase
// Mary Had A Little Lamb <- titlecase_all_words

// ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples <- input phrase
// ExampleX: CamelCase/UPPERCASE&Lowercase,ExampleY:N0=Apples <- first_char_to_uppercase
// Examplex: Camelcase/Uppercase&Lowercase,Exampley:N0=Apples <- titlecase_all_words

// …n1=orangesFromSPAIN&&n2!='a sub-string inside' <- input phrase
// …N1=OrangesFromSPAIN&&N2!='A Sub-String Inside' <- first_char_to_uppercase
// …N1=Orangesfromspain&&N2!='A Sub-String Inside' <- titlecase_all_words

// snake_case_example_.Train-case-example… <- input phrase
// Snake_case_example_.Train-Case-Example… <- first_char_to_uppercase
// Snake_case_example_.Train-Case-Example… <- titlecase_all_words

// Capitalize First Letter of each word in a String - JavaScript <- input phrase
// Capitalize First Letter Of Each Word In A String - JavaScript <- first_char_to_uppercase
// Capitalize First Letter Of Each Word In A String - Javascript <- titlecase_all_words

3
function titleCase(str) {

    var myString = str.toLowerCase().split(' ');
    for (var i = 0; i < myString.length; i++) {
        var subString = myString[i].split('');
        for (var j = 0; j < subString.length; j++) {
            subString[0] = subString[0].toUpperCase();
        }
        myString[i] = subString.join('');
    }

    return myString.join(' ');
}

4
আপনার উত্তরে কিছু মন্তব্য যুক্ত করুন।
HDJEMAI

3

অথবা এটি প্রতিস্থাপন () ব্যবহার করে এবং প্রতিটি শব্দের প্রথম অক্ষরটিকে তার "আপার কেস" দিয়ে প্রতিস্থাপন করতে পারে।

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

titleCase("I'm a little tea pot");

2

আপনি mapমূলত ফাংশনটি দিয়ে কীভাবে এটি করতে পারেন তা এখানে , এটি গৃহীত উত্তরের মতোই তবে এটি ছাড়াও করে for-loop। অতএব, আপনাকে কোডের কয়েকটি লাইন সংরক্ষণ করে।

function titleCase(text) {
  if (!text) return text;
  if (typeof text !== 'string') throw "invalid argument";

  return text.toLowerCase().split(' ').map(value => {
    return value.charAt(0).toUpperCase() + value.substring(1);
  }).join(' ');
}

console.log(titleCase("I'm A little tea pot"));


2

নীচে স্ট্রিংয়ে প্রতিটি শব্দের প্রথম বর্ণমালা বড় করার আরও একটি উপায় রয়েছে।

স্ট্রিং অবজেক্ট ব্যবহার করে একটি কাস্টম পদ্ধতি তৈরি করুন prototype

String.prototype.capitalize = function() {
    var c = '';
    var s = this.split(' ');
    for (var i = 0; i < s.length; i++) {
        c+= s[i].charAt(0).toUpperCase() + s[i].slice(1) + ' ';
    }
    return c;
}
var name = "john doe";
document.write(name.capitalize());

1

@ এর কিছু প্রস্তাবিত সমাধানের আরও কমপ্যাক্ট (এবং আধুনিক) পুনর্লিখন:

let titleCase = (str => str.toLowerCase().split(' ').map(
                c => c.charAt(0).toUpperCase() + c.substring(1)).join(' '));
    
document.write(titleCase("I'm an even smaller tea pot"));


1

কাঁচা কোড:

function capi(str) {
    var s2 = str.trim().toLowerCase().split(' ');
    var s3 = [];
    s2.forEach(function(elem, i) {
        s3.push(elem.charAt(0).toUpperCase().concat(elem.substring(1)));
    });
    return s3.join(' ');
}
capi('JavaScript string exasd');

আপনার কিছুটা আরও বিশদ সরবরাহ করা উচিত (কী কী সমস্যা ছিল?)
16:51 12:51-এ

1

আমি replace()একটি নিয়মিত প্রকাশের সাথে ব্যবহার করেছি :

function titleCase(str) {

  var newStr = str.toLowerCase().replace(/./, (x) => x.toUpperCase()).replace(/[^']\b\w/g, (y) => y.toUpperCase());

  console.log(newStr);
}

titleCase("I'm a little tea pot")

1

একটি সম্পূর্ণ এবং সহজ সমাধান এখানে যায়:

String.prototype.replaceAt=function(index, replacement) {
        return this.substr(0, index) + replacement+ this.substr(index
  + replacement.length);
}
var str = 'k j g           u              i l  p';
function capitalizeAndRemoveMoreThanOneSpaceInAString() {
    for(let i  = 0; i < str.length-1; i++) {
        if(str[i] === ' ' && str[i+1] !== '')
            str = str.replaceAt(i+1, str[i+1].toUpperCase());
    }
    return str.replaceAt(0, str[0].toUpperCase()).replace(/\s+/g, ' ');
}
console.log(capitalizeAndRemoveMoreThanOneSpaceInAString(str));

আপনি স্ট্রিং.প্রোটোটাইপ প্রতিবার এই পদ্ধতিটি বলা হচ্ছে কেন সংশোধন? যদি আপনার কিছু করার দরকার হয় তবে একবারেই এটি করতে চান এবং পছন্দসই আপনি বিল্ট-ইনগুলির প্রোটোটাইপগুলিকে কখনও স্পর্শ করেন না । এটি কিছুটা No-No ...
কিছু আছে

0

নীচের কোডটি চেক করুন।

function titleCase(str) {
  var splitStr = str.toLowerCase().split(' ');
  var nstr = ""; 
  for (var i = 0; i < splitStr.length; i++) {
    nstr +=  (splitStr[i].charAt(0).toUpperCase()+ splitStr[i].slice(1) + " 
    ");
  }
  console.log(nstr);
}

var strng = "this is a new demo for checking the string";
titleCase(strng);

4
এই কোড স্নিপেটের জন্য আপনাকে ধন্যবাদ, যা কিছু সীমিত, তাত্ক্ষণিক সহায়তা সরবরাহ করতে পারে। একটি সঠিক ব্যাখ্যা কেন এটি সমস্যার একটি ভাল সমাধান, তা দেখিয়ে তার দীর্ঘমেয়াদী মানকে ব্যাপকভাবে উন্নত করবে এবং ভবিষ্যতে পাঠকদের আরও অন্যান্য অনুরূপ প্রশ্নের সাথে আরও দরকারী করে তুলবে। আপনার অনুমানগুলি সহ কিছু ব্যাখ্যা যুক্ত করতে দয়া করে আপনার উত্তরটি সম্পাদনা করুন।
আইবুগ

0

ECMA2017 বা ES8 হিসাবে

const titleCase = (string) => {
  return string
    .split(' ')
    .map(word => word.substr(0,1).toUpperCase() + word.substr(1,word.length))
    .join(' ');
};

let result = titleCase('test test test');
console.log(result);

ব্যাখ্যা:
১. প্রথমত, আমরা স্ট্রিংটি "টেস্ট টেস্ট টেস্ট" আমাদের ফাংশন "টাইটেলকেসে" পাস করি।
২. আমরা স্থানের ভিত্তিতে একটি স্ট্রিং বিভক্ত করি সুতরাং প্রথম ফাংশন "বিভক্ত" এর ফলাফলটি ["পরীক্ষা", "পরীক্ষা", "পরীক্ষা"] হবে
3.. আমরা যেমন একটি অ্যারে পেয়েছি, আমরা প্রতিটি শব্দ ম্যানিপুলেশনের জন্য ম্যাপ ফাংশনটি ব্যবহার করেছি অ্যারে মধ্যে। আমরা প্রথম অক্ষরকে মূলধন করি এবং এতে বাকী অক্ষর যুক্ত করি।
৪. শেষের দিকে, আমরা স্পেসটি ব্যবহার করে অ্যারে যুক্ত হয়েছি কারণ আমরা স্ট্র্যাপটিকে স্যাপস দ্বারা বিভক্ত করেছি।


আমি মনে করি আপনি বিভক্ত হওয়ার আগে খুব প্রথম দিকে কিছু হারিয়ে ফেলছেন এবং তা toLowerCase()
আর্চনুব

@ আর্চনুব, হ্যাঁ আমরা বিভক্ত হওয়ার আগেই লোভারকেসে () যোগ করতে পারি। তবে এটি সম্পূর্ণরূপে ব্যবহারের ক্ষেত্রে নির্ভর করে যেমন আমরা যদি "টেইস্ট টেস্ট" ইনপুটটির জন্য "টেষ্ট টেস্ট" আউটপুট চাই, তবে এই ক্ষেত্রে আমরা লোভারকেস () এ যুক্ত করতে পারি না।
পুলকিত আগরওয়াল

0

function titleCase(str) {
  //First of all, lets make all the characters lower case
  let lowerCaseString = "";
  for (let i = 0; i < str.length; i++) {
    lowerCaseString = lowerCaseString + str[i].toLowerCase();
  }
  //Now lets make the first character in the string and the character after the empty character upper case and leave therest as it is
  let i = 0;
  let upperCaseString = "";
  while (i < lowerCaseString.length) {
    if (i == 0) {
      upperCaseString = upperCaseString + lowerCaseString[i].toUpperCase();
    } else if (lowerCaseString[i - 1] == " ") {
      upperCaseString = upperCaseString + lowerCaseString[i].toUpperCase();
    } else {
      upperCaseString = upperCaseString + lowerCaseString[i];
    }
    i = i + 1;
  }
  console.log(upperCaseString);

  return upperCaseString;
}

titleCase("hello woRLD");


0

এখানে আমি তিনটি ফাংশন ব্যবহার করেছি toLowerCase(), toUpperCase()এবংreplace(regex,replacer)

function titleCase(str) { 
     return str.toLowerCase().replace(/^(\w)|\s(\w)/g, (grp) => grp.toUpperCase()); 
}

titleCase("I'm a little tea pot");

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.