লোড্যাশ শিরোনাম কেস (প্রতিটি শব্দের বড় অক্ষর)


118

আমি লড্যাশ ডক্স এবং অন্যান্য স্ট্যাক ওভারফ্লো প্রশ্নগুলি দেখছি - এই কাজটি সম্পাদনের বেশ কয়েকটি নেটিভ জাভাস্ক্রিপ্ট পদ্ধতি রয়েছে , সেখানে কি কোনও উপায় আছে যে আমি খাঁটি লোডাশ ফাংশনগুলি (বা কমপক্ষে বিদ্যমান প্রোটোটাইপাল ফাংশন) ব্যবহার করে শিরোনামের ক্ষেত্রে একটি স্ট্রিং রূপান্তর করতে পারি? যাতে আমাকে নিয়মিত ভাব প্রকাশ করতে বা কোনও নতুন ফাংশন সংজ্ঞায়িত করতে না হয়?

যেমন

This string ShouLD be ALL in title CASe

হওয়া উচিত

This String Should Be All In Title Case


4
আপনি এইচটিএমএল থেকেও একই কাজ করতে পারেন, শৈলী = "পাঠ্য-রূপান্তর: মূলধন"
চৌদ্দীর

উত্তর:


228

এটি একটি ছোট পরিবর্তন দ্বারা করা যেতে পারে startCase:

_.startCase(_.toLower(str));


4
_.startCase("aaa BBB ccc") === "Aaa BBB Ccc"
ব্র্যান্ডন

4
আমি এটা পছন্দ করি. আমি সম্পর্কে জানতাম না startCase
ব্র্যান্ডন

4
.startCase ( "camelString") === "উটের স্ট্রিং" কিন্তু _.startCase ( .toLower ( "camelString")) === "Camelstring" দেখে মনে হচ্ছে lodash একটি titleCase পদ্ধতি প্রয়োজন
aristidesfl

4
আমি এটি পছন্দ করি তবে এটি অক্ষর যেমন সরিয়ে দেয় :এটি একটি সমস্যা।
জ্যাবারওয়কিডেকম্পেলার

4
এটি অ্যাকসেন্টের সাথে প্রথম নামের জন্য কাজ করে না (স্পেনীয় "মার্টিনিজ কর্টেস পেঁজা" "মার্টিনেজ কর্টেস পেনা" হয়ে যায়) বা হাইফেনের সাথে (ফরাসী "জিন লুই" "জিন লুই" হয়ে ওঠে)। একইভাবে লোডাসের কোনও "* কেস" ফাংশনের জন্য যায়
ফ্লো

45
_.startCase(_.camelCase(str))

ব্যবহারকারী-উত্পাদিত পাঠ্যের জন্য, এটি গৃহীত উত্তরের চেয়ে বেশি কেস পরিচালনা করে

> startCase(camelCase('myString'))
'My String'
> startCase(camelCase('my_string'))
'My String'
> startCase(camelCase('MY_STRING'))
'My String'
> startCase(camelCase('my string'))
'My String'
> startCase(camelCase('My string'))
'My String'

31

লোডাস সংস্করণ 4 সহ।

_.upperFirst(_.toLower(str))


4
এটির চেয়ে startCaseএটি আরও ভাল কারণ এটি এজে এর চেয়ে বেশি অক্ষর পরিচালনা করতে পারে, উদাহরণস্বরূপ å, ä এবং ö ö
লার্স ন্যাস্ট্রোম

4
আপার ফার্স্ট কেবল প্রথম শব্দের প্রথম চরিত্র পরিবর্তন করবে, পরবর্তী শব্দগুলির জন্য নয়। আমি বিশ্বাস করি না যে এটি এই বিশেষ কারণে স্টার্টক্যাসের চেয়ে ভাল।
রাঘাওয়ান

16
'This string ShouLD be ALL in title CASe'
  .split(' ')
  .map(_.capitalize)
  .join(' ');

4
এটি অবশ্যই সবচেয়ে সংক্ষিপ্ত, পছন্দ করে। স্পষ্টতই এখনও একটি অ্যারেতে বিভক্ত হওয়া দরকার, তবে আমি এখনও যা বলতে পারি তা থেকে এটি সবচেয়ে সংক্ষিপ্ত এবং মধুর সমাধান। এছাড়াও, 1528 ইস্যুতে @ অ্যালেক্সানড্রে থাবালডি নির্দেশ করেছেন, সম্ভবত এর upperFirstপরিবর্তে ব্যবহার করা উচিত capitalize
ব্র্যান্ডস্ক্রিপ্ট

... কিন্তু _.startCase স্পষ্টভাবে ধিক্কার জানাই :)
brandonscript

4
_.startCaseযতিচিহ্নগুলি সরিয়ে দেয়। উদাহরণ _.startCase('first second etc...স্ট্রিংটি প্রদান করেFirst Second Etc
লাক্টিস্টার

এই যেমন আমার ব্যবহার ক্ষেত্রে জন্য ভাল ছিল startCaseউদাহরণস্বরূপ একটি ফাঁকা পরিবর্তিত সবকিছু user_nameহতে হবে User Name, এবং আমি শুধুমাত্র চেয়েছিলেন User_nameমত text-transform: capitalizeCSS এর সম্পত্তি
gonzarodriguezt

7

এই প্রশ্নের মিশ্র উত্তর রয়েছে। কেউ কেউ সুপারিশ করার _.upperFirstসময় ব্যবহার করার পরামর্শ দিচ্ছেন _.startCase

তাদের মধ্যে পার্থক্য জানুন।

i) _.upperFirstআপনার স্ট্রিংয়ের প্রথম অক্ষরটি রূপান্তরিত করবে, তারপরে স্ট্রিংটি একক শব্দ বা একাধিক শব্দের হতে পারে তবে আপনার স্ট্রিংয়ের প্রথম অক্ষরটি বড় হাতের অক্ষরে রূপান্তরিত হবে।

_.upperFirst('jon doe')

আউটপুট:

Jon doe

ডকুমেন্টেশন https://lodash.com/docs/4.17.10#upperFirst দেখুন

ii) _.startCaseআপনার স্ট্রিংয়ের ভিতরে প্রতিটি শব্দের প্রথম অক্ষর রূপান্তরিত করবে।

_.startCase('jon doe')

আউটপুট:

Jon Doe

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


হ্যাঁ, তবে মিক্সড কেস স্ট্রিং সম্পর্কে কী? এগুলির কোনওটিই 'জোন ডু'কে' জোন ডো 'ছাড়া তৈরি করবে না _.lower()
ব্র্যান্ডস্ক্রিপ্ট

3

এখানে কেবলমাত্র লড্যাশ পদ্ধতি এবং কোনও বিল্টিন পদ্ধতি ব্যবহারের উপায় নেই:

_.reduce(_.map(_.split("Hello everyOne IN the WOrld", " "), _.capitalize), (a, b) => a + " " + b)

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

পৃথক শব্দ করতে আপনি মানচিত্রের ক্রিয়াকলাপও আলাদা করতে পারেন


0
 var s = 'This string ShouLD be ALL in title CASe';
 _.map(s.split(' '), (w) => _.capitalize(w.toLowerCase())).join(' ')

যতক্ষণ না আমি এটি মিস করি, লোডাশের নিজস্ব / লোয়ারের লোয়ার নিজস্ব নিজস্ব পদ্ধতি নেই।


@vbotio দেখে মনে হচ্ছে _.upperFirstকেবল প্রথম চরিত্রের (একটি প্রতিশব্দ _.capitalize()?) এর ক্ষেত্রে প্রযোজ্য
ব্র্যান্ডসক্রিপ্ট

4
capitalizeএবং upperFirstবিভিন্ন জিনিস।
ব্র্যান্ডন

_আর রাজধানী পুরো স্ট্রিংয়ের ক্ষেত্রে প্রযোজ্য
vbotio

0

@ 4 ক্যাসলের উত্তর হিসাবে সংক্ষিপ্ত নয়, তবে বর্ণনামূলক এবং লড্যাশ পূর্ণ, তবুও ...

var basicTitleCase = _
    .chain('This string ShouLD be ALL in title CASe')
    .toLower()
    .words()
    .map(_.capitalize)
    .join(' ')
    .value()

console.log('Result:', basicTitleCase)
console.log('Exact Match:' , basicTitleCase === 'This String Should Be All In Title Case')
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>


আমি অনুমান করতে পারি যে উত্তরের ভার্বোসটি এবং দৈর্ঘ্য এটিকে প্রায় অনাকাঙ্ক্ষিত করে তুলেছে। আমি ডাউনওয়েট করিনি, তবে এটি আমার প্রথম পছন্দ হবে না।
ব্র্যান্ডস্ক্রিপ্ট

0

আমার ব্যবহারের মামলার আরও একটি সমাধান এখানে দেওয়া আছে: "শয়তানের মেরুদণ্ড"

কেবল:

function titleCase (str) {
  return _.map(str.split(' '), _.upperFirst).join(' ');
}

স্টার্টকেস ব্যবহার করা এস্ট্রোফেরিটি সরিয়ে ফেলত, সুতরাং আমাকে এই সীমাবদ্ধতার চারপাশে কাজ করতে হয়েছিল। অন্যান্য সমাধানগুলি বেশ সংশ্লেষিত বলে মনে হয়েছিল। এটি পরিষ্কার, বোঝা সহজ হিসাবে এটি আমি পছন্দ করি।


0

এটি শুধুমাত্র লোডাস দিয়ে করা যেতে পারে

properCase = string =>
        words(string)
            .map(capitalize)
            .join(' ');

const proper = properCase('make this sentence propercase');

console.log(proper);
//would return 'Make This Sentence Propercase'

আপনার লোটাস থেকে মূলধন এবং শব্দ প্রয়োজন।
জাস্টিন ব্রাউন


হ্যাঁ, তবে আপনি লোডাশ থেকে ফাংশনগুলি কল করছেন না; যদি আপনি তাদের কোনওভাবেই var words = ._words
ব্র্যান্ডস্ক্রিপ্ট


-3

লড্যাশ 4 এর সাথে, আপনি _ ক্যাপিটালাইজ () ব্যবহার করতে পারেন

_.capitalize('JOHN') এটি 'জন' ফেরত

বিশদের জন্য https://lodash.com/docs/4.17.5# ক্যাপিটালাইজ দেখুন


শব্দের একটি বাক্য ব্যবহারের ক্ষেত্রে পরীক্ষা করা ভাল। সন্দেহ করুন এটি প্রতিটি শব্দের প্রথম অক্ষরকে বড় করে দেয় না।
ব্র্যান্ডসক্রিপ্ট

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