জাভাস্ক্রিপ্টে N অক্ষরে একটি স্ট্রিং কীভাবে ছাঁটাবেন?


169

আমি কীভাবে জাভাস্ক্রিপ্ট ব্যবহার করে এমন একটি ফাংশন তৈরি করতে পারি যা আর্গুমেন্ট হিসাবে পাস করা স্ট্রিমটি একটি নির্দিষ্ট দৈর্ঘ্যে, আর্গুমেন্ট হিসাবে পাস করা যায় tri উদাহরণ স্বরূপ:

var string = "this is a string";
var length = 6;
var trimmedString = trimFunction(length, string);

// trimmedString should be:
// "this is"

কেউ ধারণা পেয়েছেন? আমি সাবস্ট্রিং ব্যবহার সম্পর্কে কিছু শুনেছি, তবে বেশ বুঝতে পারিনি।


1
"এটি" = 7 টি অক্ষর, আপনি কি এটির উদ্দেশ্য করেছিলেন?
আজিজ পুঞ্জানী

প্রশ্নে যেমন বলা হয়েছে, এটি করার জন্য আমি কীভাবে সাবস্ট্রিং ব্যবহার করব তা খুব বেশি নিশ্চিত নই। আপনি দয়া করে আমাকে একটি উদাহরণ দিতে পারেন? আমি অবশ্যই এটির একটি উত্তর গ্রহণ করব, যদি এটি কাজ করে;) @ অন্তর্বাসের_কোডার উফ, টাইপো!

উত্তর:


346

কেন string.substring(0, 7);কেবল সাবস্ট্রিং ব্যবহার করবেন না ... প্রথম যুক্তি (0) হ'ল শুরুর পয়েন্ট। দ্বিতীয় যুক্তি (7) শেষ পয়েন্ট (একচেটিয়া)। আরও তথ্য এখানে।

var string = "this is a string";
var length = 7;
var trimmedString = string.substring(0, length);

ধন্যবাদ! পুরোপুরি কাজ করে। সময় সীমা অতিক্রম করার সাথে সাথে আমি এটিকে উত্তর হিসাবে চিহ্নিত করব!

24
এবং যদি আপনি সর্বাধিক দৈর্ঘ্যের অতিক্রমকারী স্ট্রিংগুলির জন্য উপবৃত্ত চান (সম্ভবত দীর্ঘতর সর্বাধিকের জন্য আরও সহায়ক): var স্ট্রিং = "এটি একটি স্ট্রিং"; var দৈর্ঘ্য = 20; var trimmedString = স্ট্রিং.লেন্থ> দৈর্ঘ? স্ট্রিং.সুবস্ট্রিং (0, দৈর্ঘ্য - 3) + "...": স্ট্রিং.সুবস্ট্রিং (0, দৈর্ঘ্য);
উইল

5
দয়া করে মনে রাখবেন স্ট্রিং.সুবস্ট্র (স্টার্ট, দৈর্ঘ্য) অদ্ভুত আচরণ করে, দৈর্ঘ্যের স্ট্রিংয়ের দৈর্ঘ্যের চেয়ে বেশি হলে এটি খালি ফিরে আসবে। স্ট্রিং.স্যাবস্ট্রিং (শুরু, শেষ) প্রত্যাশার মতো কাজ করে, যদি প্রদত্ত শেষের জন্য পর্যাপ্ত অক্ষর না থাকে তবে এটি স্ট্রিংটিকে তার শেষ প্রান্তে ফিরিয়ে দেবে!
কেন্দ্রিক

1
ব্যবহার string.substr। পূর্ববর্তী মন্তব্য থাকা সত্ত্বেও এর কোনও অদ্ভুত আচরণ নেই
গিবল্ট

.substring(from, to)সূচক নেয় । .substr (দৈর্ঘ্য, থেকে) করে না, এছাড়াও .substr () ব্যবহার করা যখন প্রথম আর্গুমেন্ট নেতিবাচক IE তে কোনও অসঙ্গতি আছে।
বব স্টেইন

47

একটি মন্তব্যে উইলের মন্তব্য অনুলিপি করা, কারণ আমি এটি দরকারী বলে মনে করেছি:

var string = "this is a string";
var length = 20;
var trimmedString = string.length > length ? 
                    string.substring(0, length - 3) + "..." : 
                    string;

ধন্যবাদ উইল

এবং যে কেউ https://jsfiddle.net/t354gw7e/ :) কে পাত্তা দেয় তার জন্য একটি জিসফিল


1
string.substring(0, length)অন্য ক্ষেত্রে ব্যবহার করার কোনও অর্থ নেই, যেহেতু স্ট্রিংটি সেই সময়ে <= 20 অক্ষর হওয়ার গ্যারান্টিযুক্ত, কেবল ব্যবহার করুন string
নিক মিষ্টি 21

15

কোড পরিষ্কার করার জন্য আমি একটি এক্সটেনশন ব্যবহার করার পরামর্শ দিই। নোট করুন যে কোনও অভ্যন্তরীণ অবজেক্ট প্রোটোটাইপ প্রসারিত করা তাদের উপর নির্ভরশীল গ্রন্থাগারগুলির সাথে গণ্ডগোল সৃষ্টি করতে পারে।

String.prototype.trimEllip = function (length) {
  return this.length > length ? this.substring(0, length) + "..." : this;
}

এবং এটি ব্যবহার করুন:

var stringObject= 'this is a verrrryyyyyyyyyyyyyyyyyyyyyyyyyyyyylllooooooooooooonggggggggggggsssssssssssssttttttttttrrrrrrrrriiiiiiiiiiinnnnnnnnnnnnggggggggg';
stringObject.trimEllip(25)

5
কেন না? কারণ আপনি কোনও স্ট্যান্ডার্ড অবজেক্টের প্রোটোটাইপ ওভাররাইট করছেন .trim()। এটি অন্যান্য গ্রন্থাগার এবং সরঞ্জামগুলিতে অপ্রত্যাশিত আচরণের কারণ হতে পারে যা আপনি ব্যবহার করতে পারেন।
ওলেগ বারম্যান

1
আমার যা প্রয়োজন তা ঠিক
ন্যানেরি


2

একটু দেরি ... আমাকে সাড়া দিতে হয়েছিল। এটি সহজতম উপায়।

// JavaScript
function fixedSize_JS(value, size) {
  return value.padEnd(size).substring(0, size);
}

// JavaScript (Alt)
var fixedSize_JSAlt = function(value, size) {
  return value.padEnd(size).substring(0, size);
}

// Prototype (preferred)
String.prototype.fixedSize = function(size) {
  return this.padEnd(size).substring(0, size);
}

// Overloaded Prototype
function fixedSize(value, size) {
  return value.fixedSize(size);
}

// usage
console.log('Old school JS -> "' + fixedSize_JS('test (30 characters)', 30) + '"');
console.log('Semi-Old school JS -> "' + fixedSize_JSAlt('test (10 characters)', 10) + '"');
console.log('Prototypes (Preferred) -> "' + 'test (25 characters)'.fixedSize(25) + '"');
console.log('Overloaded Prototype (Legacy support) -> "' + fixedSize('test (15 characters)', 15) + '"');

ধাপে ধাপে. .প্যাডএন্ড - স্ট্রিংয়ের দৈর্ঘ্যের গ্যারান্টি দেয়

"প্যাডএন্ড () পদ্ধতিটি বর্তমান স্ট্রিংকে প্রদত্ত স্ট্রিং দিয়ে প্যাড করে (পুনরাবৃত্ত, যদি প্রয়োজন হয়) যাতে ফলস্বরূপ স্ট্রিং একটি নির্দিষ্ট দৈর্ঘ্যে পৌঁছায় The প্যাডিংটি বর্তমান স্ট্রিংয়ের শেষ (ডান) থেকে প্রয়োগ করা হয় this এই ইন্টারেক্টিভের উত্স উদাহরণটি গিটহাবের সংগ্রহস্থলে সংরক্ষিত রয়েছে। উত্স: বিকাশকারী.মোজিলা.আর.ইন- ইউএস / ডকস / ওয়েব / জাভা স্ক্রিপ্ট / রেফারেন্স /…

.substring - আপনার প্রয়োজন দৈর্ঘ্যের সীমাবদ্ধতা

আপনি যদি উপবৃত্তিকে যুক্ত করতে চান তবে সেগুলিকে আউটপুট এ যুক্ত করুন।

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


হ্যালো! আপনার কোড দিয়ে কী চলছে সে সম্পর্কে কিছু ব্যাখ্যা অন্তর্ভুক্ত করা ভাল। আপনার সমাধানটি গ্রহণযোগ্য উত্তরের সাথে কতটা সমান Give তা দেওয়া, সম্ভবত এটি padEndকী করছে তার কিছুটা বিশদ ।
ম্যাটি

আমার সমাধান, অনেক বেশি ক্লিনার এবং আরও মানকযুক্ত প্লাস এটি একাধিক ব্যবহার দেখায়। প্যাডএন্ড () পদ্ধতিটি বর্তমান স্ট্রিংকে প্রদত্ত স্ট্রিং দিয়ে প্যাড করে (পুনরাবৃত্ত, যদি প্রয়োজন হয়) যাতে ফলস্বরূপ স্ট্রিং একটি নির্দিষ্ট দৈর্ঘ্যে পৌঁছায়। প্যাডিংটি বর্তমান স্ট্রিংয়ের শেষ (ডান) থেকে প্রয়োগ করা হয়। এই ইন্টারেক্টিভ উদাহরণের উত্সটি একটি গিটহাব সংগ্রহস্থলে সংরক্ষণ করা হয়েছে। সূত্র: ডেভেলপার.মোজিলা.আর.ইন-
ম্যাথু ইগান

1
আমি আপনার উত্তরের গুণমান নিয়ে বিতর্ক করছি না। কীভাবে এটি আরও ভাল করা যায় সে সম্পর্কে একটি পরামর্শ। আপনার ব্যাখ্যাটি দুর্দান্ত - আপনার উত্তরটি সম্পাদনা করুন এবং এটি সেখানে দিন!
ম্যাটি

হাই ম্যাট, আমি আপনার উত্তর পছন্দ। দুঃখজনক যে আপনি কিছুটা আলাদা প্রশ্নের জবাব দিচ্ছেন। তিনি মূলত একটি স্ট্রিং ছাঁটাই সম্পর্কে জিজ্ঞাসা করেছিলেন, ফিরতি স্থির স্ট্রিং দৈর্ঘ্য নয়।
জাকুব ক্রিজ

0
    let trimString = function (string, length) {
      return string.length > length ? 
             string.substring(0, length) + '...' :
             string;
    };

ব্যবহারের ক্ষেত্রে,

let string = 'How to trim a string to N chars in Javascript';

trimString(string, 20);

//How to trim a string...

-1

আমি মনে করি আপনার এই কোডটি ব্যবহার করা উচিত :-)

    // sample string
            const param= "Hi you know anybody like pizaa";

         // You can change limit parameter(up to you)
         const checkTitle = (str, limit = 17) => {
      var newTitle = [];
      if (param.length >= limit) {
        param.split(" ").reduce((acc, cur) => {
          if (acc + cur.length <= limit) {
            newTitle.push(cur);
          }
          return acc + cur.length;
        }, 0);
        return `${newTitle.join(" ")} ...`;
      }
      return param;
    };
    console.log(checkTitle(str));

// result : Hi you know anybody ...

1
আপনি কেন এই উত্তরটি যুক্ত করলেন তা সম্পর্কে আমি আগ্রহী। প্রশ্নের ইতিমধ্যে একটি স্বীকৃত উত্তর এবং অন্যান্য বেশ কয়েকটি যুক্তিসঙ্গত উত্তর রয়েছে, এর সবগুলিই এর চেয়ে সহজ। বা আপনার ":-)" এটি একটি রসিকতা করার উদ্দেশ্যে তৈরি হয়েছিল?
স্কট স্যয়েট

নোট করুন যে গৃহীত উত্তরটিও সর্বোচ্চ রেটযুক্ত উত্তর। আমি মনে করি আপনি এখানে অন্য একটি সমস্যা সমাধানের চেষ্টা করছেন। (এবং আমি আগে মন্তব্য করার সময় এটি লক্ষ্য করি নি।) এটি এমনটি নয় যে এটি কোনও অসম্ভব সমস্যা, তবে শেষ পর্যন্ত এটি জিজ্ঞাসিত প্রশ্নের সাথে সামান্যই সম্পর্কিত। আপনারও একটি আশ্চর্যজনক প্রভাব রয়েছে যে প্রদত্ত ইনপুটটির সাথে আপনার আউটপুট স্ট্রিংগুলি 23অক্ষর দীর্ঘ, 17ডিফল্ট প্যারামিটার প্লাস 4প্রত্যয়ের অক্ষরের চেয়ে দীর্ঘ " ..."। অদ্ভুত মনে হচ্ছে।
স্কট স্যয়েট

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