কম্পিউটার

JavaScript:একটি স্ট্রিং-এ প্রতিটি শব্দের প্রথম অক্ষর বড় করুন

অনেক শিক্ষানবিস-বান্ধব কোড চ্যালেঞ্জ রয়েছে যা আপনাকে একজন প্রকৌশলীর মতো আরও চিন্তা করতে সাহায্য করবে। এইরকম একটি চ্যালেঞ্জ হল যেখানে আপনি একটি প্রদত্ত স্ট্রিং-এর প্রতিটি শব্দের প্রথম অক্ষর বড় করে লিখবেন। এই নিবন্ধে, আমরা জাভাস্ক্রিপ্টে প্রম্পট এবং বেশ কয়েকটি সম্ভাব্য সমাধানের দিকে নজর দেব।

প্রম্পট

একটি ফাংশন দেওয়া হয়েছে, কপিটালাইজ করুন , যা str নেয় একটি প্যারামিটার হিসাবে, strটি ফেরত দিন প্রতিটি শব্দ বড় করে আপনার সমাধানে এজ কেসগুলি চিন্তা করার চেষ্টা করুন (যেমন কোন ইনপুট, ভুল ধরণের ইনপুট ইত্যাদি)।

পন্থা

  1. আবার প্রম্পটটি দেখুন। আপনি শব্দের মধ্যে খুঁজে পেতে পারেন এমন কোনো কীওয়ার্ড লিখুন বা হাইলাইট করুন।
  2. সমস্যার শব্দের অর্থ একত্রিত করুন। কোড চ্যালেঞ্জগুলি করার সবচেয়ে কঠিন অংশের অংশ হল সমস্যাটি আপনাকে কী করতে বলছে তা খুঁজে বের করার চেষ্টা করা। সমস্যাটি বোঝা আপনাকে এটি সমাধান করতে সক্ষম হওয়ার জন্য দীর্ঘ পথ আসতে সহায়তা করবে।
  3. সিউডোকোড একটি সম্ভাব্য সমাধান বের করুন। এটি বাস্তব কোড হতে হবে না (এটি আপনার IDE বা ব্রাউজার কনসোলে এক্সিকিউটেবল হতে হবে না – সাধারণ ইংরেজি ঠিক আছে):
Understand what you're given:
	given a function
   	that takes some sort of input
 
Understand what you need to return:
   	a string
What's the first thing you need to do?
What are some options I can take, knowing that the input is a string?
Is there string methods I can use?
How can I look them up if I don't know what they are?
What do I do if the input is empty or it's a number or object? 
Maybe let's start by writing a for loop to loop through the string.
 		What comes next? ... and so on...

পুঙ্খানুপুঙ্খভাবে সমস্যা ধাপে ধাপে বিরতি. এটি আপনাকে এজ কেসগুলি সম্পর্কে চিন্তা করতে সাহায্য করবে - এমন ক্ষেত্রে যেখানে একটি ভুল ইনপুট পাস বা একটি খালি স্ট্রিং থাকতে পারে - এবং কীভাবে সমস্যাটিকে যৌক্তিক পদক্ষেপে ভেঙে ফেলা যায়৷ এটি মূলত আপনার পরীক্ষা-নিরীক্ষার পর্যায় - কোন ভুল উত্তর নেই, শুধু সমস্যাটির সাথে কীভাবে যোগাযোগ করা যায় সে সম্পর্কে চিন্তাভাবনা। এই চিন্তাগুলি বিপথগামী বা ভুল নির্দেশিত হতে পারে - এভাবেই আপনি সেই পদ্ধতিগুলি সম্পর্কে শিখবেন যা করবে না একটি সমস্যার জন্য কাজ করুন৷

আমি খুঁজে পেয়েছি যে যদি আমি এটিকে জোরে ব্যাখ্যা করে সমস্যাটি ভেঙে দিতে পারি তবে যুক্তি আমার কাছে সহজে আসে। আপনার মাইলেজ আপনার পদ্ধতির উপর পরিবর্তিত হতে পারে, কিন্তু আমি অন্তত এটি সুপারিশ করতে চেয়েছিলাম যদি এটি আপনার জন্য কাজ করে! এই ধরনের একটি ছোট সমস্যার জন্য সিউডোকোডটি একটু বেশি বলে মনে হচ্ছে, কিন্তু আপনি যদি এখন ধারণাটি অনুশীলন করেন, আপনি যখন উল্লেখযোগ্যভাবে কঠিন সমস্যাগুলির উপর কাজ করছেন তখন এটি আপনার কাছে সহজ হবে৷

সমাধান

সমাধান #1:string.replace() এবং charAt() পদ্ধতি সহ split() এবং লুপের জন্য

<!DOCTYPE html>
<html>
 <head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width">
   <title>for loop</title>
  
 </head>
 <body>
   <div id="root"></div>
  <script async defer>
    let capitalize = (str) => {
      let arr = str.split(' ');
      for(let i = 0; i < arr.length; i++ ) {
         arr[i] = arr[i].replace(arr[i].charAt(0),  arr[i].charAt(0).toUpperCase());
     }
     return arr.join(' ');
   }
   let root = document.getElementById('root');
   root.innerHTML = JSON.stringify(capitalize('the quick brown fox jumped over the lazy dog'));
  </script>
 </body>
</html>

এই প্রথম সমাধানে, আমরা স্ট্রিংটিকে এর স্পেসগুলিতে বিভক্ত করি। এটি আমাদের প্রতিটি স্বতন্ত্র শব্দের সাথে তার নিজস্ব সূচক হিসাবে একটি arr দেয়। অ্যারের উপর লুপ করা আমাদের প্রতিটি স্ট্রিং এর ব্যক্তিগত সূচী অ্যাক্সেস করার ক্ষমতা দেয়। আমরা ইনডেক্স i-এ স্ট্রিং (এই ক্ষেত্রে স্ট্রিংটি arr[i]) পুনরায় বরাদ্দ করেছি যাতে সূচক 0 (arr[i].charAt(0) এ স্ট্রিং অক্ষরটিকে তার বড় হাতের মান দিয়ে প্রতিস্থাপন করার ফলাফল হতে পারে। তারপর প্রতিটি শব্দের মধ্যে ফাঁকা স্থান সহ একটি স্ট্রিং-এ arr-কে পুনরায় যোগ করুন।

সমাধান #2:মানচিত্র পদ্ধতি এবং স্লাইস দিয়ে বিভক্ত করুন

<!DOCTYPE html>
<html>
 <head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width">
   <title>Map</title>
 </head>
 <body>
   <div id="root"></div>
  <script async defer>
    let capitalize = (str) => {
      // split the string on the spaces so that we know what we are working with.
      let arr = str.split(' ') // make sure there is a space in between the two quotes here
      //use the map method
      arr.map((word, index, array) => {
        array[index] = array[index][0].toUpperCase() + array[index].slice(1);
        return array[index];
 
      })
      console.log(arr)
      return arr.join(' ');
    }
   let root = document.getElementById('root');
   root.innerHTML = JSON.stringify(capitalize('the quick brown fox jumped over the lazy dog'));
   </script>
 </body>
</html>

এই সমাধানে, আমরা খুব একইভাবে শুরু করি, কিন্তু তারপরে আমরা অ্যারের উপর লুপ করার জন্য ম্যাপ নামে একটি ES6 অ্যারে পদ্ধতি ব্যবহার করি এবং প্রতিটি শব্দের প্রথম অক্ষরকে পুঁজি করে নতুন মান ফেরত দিই। আমরা toUpperCase() এর সাথে যা করতে যাচ্ছি তা স্পষ্টভাবে তুলে ধরে এটি করে প্রথম অক্ষরের জন্য পদ্ধতি, slice() শব্দের নতুন সংস্করণ পেতে বাকি স্ট্রিংয়ের জন্য পদ্ধতি, এবং স্ট্রিং সংযোজন। আমরা তারপর অ্যারেতে যোগদান করি এবং এটি ফেরত দিই৷

সমাধান #3:রেগুলার এক্সপ্রেশন

<!DOCTYPE html>
<html>
 <head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width">
   <title>repl.it</title>
  
 </head>
 <body>
   <div id="root"></div>
  <script async defer>
    let capitalize = (str) => {
      let regex = /(^|\s)\S/g
       return str.replace(regex, letter => letter.toUpperCase());
    }
   let root = document.getElementById('root');
   root.innerHTML = JSON.stringify(capitalize('the quick brown fox jumped over the lazy dog'));
   </script>
 </body>
</html>

এই সমাধানে, আমরা স্ট্রিং ( ^ ) বা -এর শুরুতে সমস্ত নন-হোয়াইটস্পেস অক্ষর ( \S ) খুঁজতে একটি নিয়মিত অভিব্যক্তি ব্যবহার করি। একটি হোয়াইটস্পেস অক্ষর (\s) এর পরে। শেষে g পতাকা মানে বিশ্বব্যাপী এবং এটি আমাদের সেই প্যাটার্নের সমস্ত দৃষ্টান্ত সন্ধান করতে দেয়। তারপরে আমরা সেই রেজেক্স প্যাটার্নটিকে একটি ফাংশন দিয়ে প্রতিস্থাপন করতে প্রতিস্থাপন পদ্ধতি ব্যবহার করি যা সেই অক্ষরটি নেয় এবং এটিকে বড় হাতের অক্ষরে ফেরত দেয়।

চূড়ান্ত চিন্তা

এই সমাধানগুলি কোনওভাবেই এই সমস্যার একমাত্র সমাধান নয়। সম্ভবত, আপনি এইগুলির আরও কিছু করতে শুরু করার সাথে সাথে, আপনি এমন সমাধানগুলি নিয়ে আসবেন যা একটি নিবন্ধ বা ব্লগ পোস্ট উপস্থাপনের চেয়ে আলাদা হতে পারে বা নাও হতে পারে৷ সেটা একটা ভাল জিনিস. এর মানে আপনি একজন প্রকৌশলীর মত ভাবতে শুরু করছেন - এবং এটাই লক্ষ্য।

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।

এটা রেখে দিন. এই সমাধানগুলিতে, প্রান্তের কেসগুলি পরিচালনা করা হয়নি। আপনার যুক্তি খালি বা একটি সংখ্যা হলে আপনার কি করা উচিত? সেই প্রান্তের কেসগুলি পরিচালনা করে উপরের কোডে যোগ করার চেষ্টা করুন।

ইঙ্গিত :শর্তসাপেক্ষে যদি str তা খুঁজে বের করতে একটি ঠুং শব্দ/বিস্ময়সূচক বিন্দু ব্যবহার করুন বিদ্যমান এর প্রকার খুঁজে বের করার কোনো পদ্ধতি আছে কিনা তা খুঁজে বের করতে MDN ডক্স দেখুন কিছু যখন আপনি অগত্যা জানেন না এটি কি।

আরো একটি জিনিস :জাভাস্ক্রিপ্ট রিভার্স স্ট্রিং কোড চ্যালেঞ্জে আপনার হাত চেষ্টা করুন যদি আপনি ইতিমধ্যে না করে থাকেন!

বিবেচনার জন্য আরও সম্পদ:

রুবিতে রেগুলার এক্সপ্রেশন ব্যবহার করা - এটি রুবিকে উত্সর্গীকৃত, তবে বেশিরভাগ অংশে regex হল ভাষা অজ্ঞেয়বাদী - সমাধান #3 এ RegExp সিনট্যাক্স সম্পর্কে আরও জানতে এটি পরীক্ষা করে দেখুন।

জাভাস্ক্রিপ্ট প্রতিস্থাপন টেক্সট:একটি ধাপে ধাপে নির্দেশিকা – প্রতিস্থাপন পদ্ধতির জন্য নিবেদিত একটি টিউটোরিয়াল, সমাধান #1 এ ব্যবহৃত।


  1. C# regex ব্যবহার করে একটি স্ট্রিংয়ে প্রতিটি শব্দের প্রথম অক্ষর প্রিন্ট করুন

  2. জাভা প্রোগ্রাম একটি স্ট্রিং এর প্রতিটি শব্দের প্রথম অক্ষর ক্যাপিটালাইজ করতে

  3. regex ব্যবহার করে প্রতিটি শব্দের প্রথম অক্ষর প্রিন্ট করার জন্য জাভা প্রোগ্রাম

  4. পাইথন প্রোগ্রাম প্রতিটি শব্দের প্রথম অক্ষর বড় করতে