javascript - জাভাস্ক্রিপ্ট বই




কিভাবে আমি জাভাস্ক্রিপ্ট একটি স্ট্রিং বড় হাতের প্রথম অক্ষর করতে পারি? (20)

শুধুমাত্র সিএসএস

p::first-letter {
  text-transform: uppercase;
}
  • বলা হচ্ছে সত্ত্বেও ::first-letter , এটি প্রথম চরিত্রের ক্ষেত্রে প্রযোজ্য, অর্থাৎ স্ট্রিং %a A এর ক্ষেত্রে, এই নির্বাচক % প্রয়োগ করবে এবং এটিকে পুঁজিভুক্ত a হবে না।
  • IE9 + বা IE5.5 + এ এটি শুধুমাত্র একটি কোলন ( :first-letter ) সহ উত্তরাধিকার সূচনাতে সমর্থিত।

ES2015 এক-মাছ ধরার নৌকা

যেহেতু অনেকগুলি উত্তর আছে, কিন্তু ES2015 তে কেউ আসল সমস্যাটিকে কার্যকরীভাবে সমাধান করবে না, আমি নিম্নলিখিতগুলির সাথে এসেছি:

const capitalizeFirstChar = str => str.charAt(0).toUpperCase() + str.substring(1);

মন্তব্য

  • parameters => function তথাকথিত তীর ফাংশন হয়
  • আমি পুঁজিপতি ফার্স্ট লেটারের পরিবর্তে capitalizeFirstChar ফার্স্টখার নামে গিয়েছিলাম, কারণ ওপি কোডের জন্য কোনও অনুরোধ করেনি যা পুরো স্ট্রিংয়ের প্রথম অক্ষরকে পুঁজি করে, কিন্তু প্রথম গৃহস্থালি (অবশ্যই এটির অক্ষর)।
  • const আমাদেরকে capitalizeFirstChar const ধ্রুবক হিসাবে ঘোষনা করার ক্ষমতা দেয়, যা প্রোগ্রামার হিসাবে পছন্দসই, আপনার সর্বদা স্পষ্টভাবে আপনার উদ্দেশ্যগুলি বর্ণনা করা উচিত।
  • আমি অভিনয় বেঞ্চমার্ক string[0] string.charAt(0) এবং string[0] মধ্যে কোন উল্লেখযোগ্য পার্থক্য ছিল। উল্লেখ্য, তবে string[0] খালি স্ট্রিংয়ের জন্য undefined হবে, তাই এটি বিকল্পের তুলনায় string && string[0] পুনঃলিখন করা উচিত, যা উপায়টি খুব বেশি কার্যকর।
  • string.substring(1) চেয়ে দ্রুত।

উচ্চতার চিহ্ন

  • এই সমাধানটির জন্য 4,956,962 অপস / ± 3.03%
  • সর্বাধিক ভোট দেওয়া উত্তরের জন্য 4,577,946 অপস / ± 1.2%।
  • গুগল ক্রোম 57 এ JSBench.me দিয়ে তৈরি।

কিভাবে আমি স্ট্রিং বড় হাতের প্রথম অক্ষর তৈরি করব, কিন্তু অন্য অক্ষর ক্ষেত্রে পরিবর্তন না?

উদাহরণ স্বরূপ:

  • "this is a test" -> "This is a test"
  • "the Eiffel Tower" -> "The Eiffel Tower"
  • "/index.html" -> "/index.html"

আপনি পোস্ট করা কয়েক বিভিন্ন পদ্ধতির কর্মক্ষমতা আগ্রহী হন:

এই jsperf পরীক্ষার উপর ভিত্তি করে দ্রুততম পদ্ধতিগুলি (দ্রুততম থেকে ধীরে ধীরে নির্দেশিত)।

আপনি দেখতে পারেন যে, প্রথম দুইটি পদ্ধতি কার্যকারিতার পরিপ্রেক্ষিতে তুলনামূলকভাবে তুলনীয়, যখন String.prototype পরিবর্তন করা কার্য সম্পাদনের ক্ষেত্রে সবচেয়ে ধীরতম।

// 10,889,187 operations/sec
function capitalizeFirstLetter(string) {
    return string[0].toUpperCase() + string.slice(1);
}

// 10,875,535 operations/sec
function capitalizeFirstLetter(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
}

// 4,632,536 operations/sec
function capitalizeFirstLetter(string) {
    return string.replace(/^./, string[0].toUpperCase());
}

// 1,977,828 operations/sec
String.prototype.capitalizeFirstLetter = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}


আপনি যদি underscore.js বা Lo-Dash ব্যবহার করেন, তবে underscore.string লাইব্রেরি স্ট্রিং এক্সটেনশানগুলি প্রদান করে, যার মধ্যে রয়েছে পুঁজিবাজার:

_.capitalize (স্ট্রিং) স্ট্রিং এর প্রথম অক্ষরকে বড় হাতের অক্ষরে রূপান্তর করে।

উদাহরণ:

_.capitalize("foo bar") == "Foo bar"

আপনি যদি সমস্ত-ক্যাপ পাঠ্য সংশোধন করতে চান তবে আপনি অন্যান্য উদাহরণগুলি যেমন সংশোধন করতে চান:

function capitalize (text) {
    return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
}

এই নিম্নলিখিত টেক্সট পরিবর্তন করা হয় তা নিশ্চিত করবে:

TEST => Test
This Is A TeST => This is a test

আরো বস্তু ভিত্তিক পদ্ধতির:

String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}

এবং তারপর:

"hello world".capitalize();  =>  "Hello world" 

একটি স্ট্রিং মধ্যে সব শব্দ প্রথম অক্ষর capitalize:

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

এখানে জনপ্রিয় উত্তরটির একটি সংক্ষিপ্ত সংস্করণ যা স্ট্রিংকে অ্যারে হিসাবে চিকিত্সা করে প্রথম অক্ষরটি পায়:

function capitalize(s)
{
    return s[0].toUpperCase() + s.slice(1);
}

হালনাগাদ:

নীচের মন্তব্য অনুযায়ী এই IE 7 বা নীচে কাজ করে না।

আপডেট 2:

খালি স্ট্রিংগুলির জন্য undefined এড়াতে (নীচের @ njzk2 এর মন্তব্য দেখুন ), আপনি একটি খালি স্ট্রিং চেক করতে পারেন:

function capitalize(s)
{
    return s && s[0].toUpperCase() + s.slice(1);
}


সিএসএস:

p:first-letter {
    text-transform:capitalize;
}

এই 2018 ES6 + সমাধান হয় :

const str = 'the Eiffel Tower';
const newStr = `${str[0].toUpperCase()}${str.slice(1)}`;
console.log('Original String:', str); // the Eiffel Tower
console.log('New String:', newStr); // The Eiffel Tower


আপনি এই মত এক লাইনে এটা করতে পারেন

string[0].toUpperCase() + string.substring(1)

এই সমাধান চেকআউট:

var stringVal = 'master';
stringVal.replace(/^./, stringVal[0].toUpperCase()); // returns Master 

প্রথমে সিএসএস ব্যবহার করে এই ধরণের স্টাফগুলিকে আরও ভালভাবে পরিচালনা করা যায় , সাধারণভাবে, যদি আপনি সিএসএস ব্যবহার করে কিছু সমাধান করতে পারেন তবে প্রথমটি যান, তারপরে আপনার সমস্যা সমাধান করতে জাভাস্ক্রিপ্ট চেষ্টা করুন, তাই এই ক্ষেত্রে :first-letterসিএসএস ব্যবহার করে চেষ্টা করুনtext-transform:capitalize;

সুতরাং তার জন্য ক্লাস তৈরি করার চেষ্টা করুন, তাই আপনি বিশ্বব্যাপী এটি ব্যবহার করতে পারেন, উদাহরণস্বরূপ: .first-letter-uppercaseএবং আপনার CSS এ নীচের মতো কিছু যোগ করুন:

.first-letter-uppercase:first-letter {
    text-transform:capitalize;
}

এছাড়াও বিকল্প বিকল্প জাভাস্ক্রিপ্ট হয়, তাই ভাল কিছু ভালো হতে হবে:

function capitalizeTxt(txt) {
  return txt.charAt(0).toUpperCase() + txt.slice(1); //or if you want lowercase the rest txt.slice(1).toLowerCase();
}

এবং এটি মত কল:

capitalizeTxt('this is a test'); // return 'This is a test'
capitalizeTxt('the Eiffel Tower'); // return 'The Eiffel Tower'
capitalizeTxt('/index.html');  // return '/index.html'

আপনি যদি ওভার ওভার পুনঃব্যবহার করতে চান তবে এটি ভালভাবে জাভাস্ক্রিপ্ট নেটিভ স্ট্রিং এ সংযুক্ত হবে, তাই নীচের মত কিছু:

String.prototype.capitalizeTxt = String.prototype.capitalizeTxt || function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}

এবং নীচের হিসাবে কল করুন:

'this is a test'.capitalizeTxt(); // return 'This is a test'
'the Eiffel Tower'.capitalizeTxt(); // return 'The Eiffel Tower'
'/index.html'.capitalizeTxt();  // return '/index.html'

ইন CoffeeScript একটি স্ট্রিং জন্য প্রোটোটাইপ যুক্ত করুন:

String::capitalize = ->
  @substr(0, 1).toUpperCase() + @substr(1)

ব্যবহার হবে:

"woobie".capitalize()

যা ফলন:

"Woobie"

String.prototype.capitalize = function(){
    return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase();
    } );
};

ব্যবহার:

capitalizedString = someString.capitalize();

এটি একটি পাঠ্য স্ট্রিং => এটি একটি পাঠ্য স্ট্রিং


String.prototype.capitalize = function(allWords) {
   return (allWords) ? // if all words
      this.split(' ').map(word => word.capitalize()).join(' ') : //break down phrase to words then  recursive calls until capitalizing all words
      this.charAt(0).toUpperCase() + this.slice(1); // if allWords is undefined , capitalize only the first word , mean the first char of the whole string
}

এবং তারপর:

 "capitalize just the first word".capitalize(); ==> "Capitalize just the first word"
 "capitalize all words".capitalize(true); ==> "Capitalize All Words"

নভেম্বর ২016 (ES6) আপডেট করুন, শুধু FUN এর জন্য:

const capitalize = (string = '') => [...string].map(    //convert to array with each item is a char of string by using spread operator (...)
    (char, index) => index ? char : char.toUpperCase()  // index true means not equal 0 , so (!index) is the first char which is capitalized by `toUpperCase()` method
 ).join('')                                             //return back to string

তারপর capitalize("hello") // Hello


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

কিছু অন্যান্য উত্তর String.prototype সংশোধন String.prototype (এই String.prototype ব্যবহৃত হয়), তবে আমি এর বিরুদ্ধে এখন String.prototype করতে String.prototype (ফাংশনটি prototype যোগ করা হচ্ছে কিনা তা খুঁজে বের করতে কঠিন এবং যদি অন্য কোড একই ব্যবহার করে তবে দ্বন্দ্ব সৃষ্টি করতে পারে। নাম / একটি ব্রাউজার ভবিষ্যতে একই নামে একটি স্থানীয় ফাংশন যোগ করে)।


var capitalized = yourstring[0].toUpperCase() + yourstring.substr(1);

var str = "test string";
str = str.substring(0,1).toUpperCase() + str.substring(1);

var string = "hello world";
string = string.charAt(0).toUpperCase() + string.slice(1);
alert(string);





letter