দীর্ঘ স্ট্রিংগুলি কাটানোর স্মার্ট উপায়


184

জাভাস্ক্রিপ্টের সাথে স্ট্রিং কাটানো এবং শেষের দিকে উপবৃত্ত স্থাপনের জন্য কারও কাছে কি আরও অত্যাধুনিক সমাধান / গ্রন্থাগার রয়েছে: সুস্পষ্ট সমাধানের চেয়ে?

if (string.length > 25) {
  string = string.substring(0, 24) + "...";
}

5
"আরও পরিশীলিত" বলতে কী বোঝ? শব্দের সীমা বিবেচনা করে এমন কার্যাদি?
Residuum

1
এবং এইচটিএমএল ট্যাগগুলির মাঝখানে ছাঁটাই না।
জেড

উত্তর:


363

মূলত, আপনি প্রদত্ত স্ট্রিংয়ের দৈর্ঘ্য পরীক্ষা করে দেখুন। যদি এটি একটি নির্দিষ্ট দৈর্ঘ্যের চেয়ে দীর্ঘ হয় তবে এটিকে nদৈর্ঘ্যে n( substrবা slice) …ক্লিপ করুন এবং ক্লিপযুক্ত স্ট্রিংটিতে এইচটিএমএল সত্তা (…) যুক্ত করুন।

যেমন একটি পদ্ধতি মত দেখাচ্ছে

function truncate(str, n){
  return (str.length > n) ? str.substr(0, n-1) + '…' : str;
};

যদি 'আরও পরিশীলিত' দ্বারা আপনি যদি স্ট্রিংয়ের শেষ শব্দের সীমানায় কাটছাঁট করতে চান তবে আপনার একটি অতিরিক্ত চেক প্রয়োজন। প্রথমে আপনি স্ট্রিংটিকে পছন্দসই দৈর্ঘ্যে ক্লিপ করুন, তারপরে আপনি এর ফলাফলটিকে তার শেষ শব্দের সীমানায় ক্লিপ করুন

function truncate( str, n, useWordBoundary ){
  if (str.length <= n) { return str; }
  const subString = str.substr(0, n-1); // the original check
  return (useWordBoundary 
    ? subString.substr(0, subString.lastIndexOf(" ")) 
    : subString) + "&hellip;";
};

আপনি Stringআপনার ফাংশন সহ নেটিভ প্রোটোটাইপ প্রসারিত করতে পারেন । সেক্ষেত্রে strপ্যারামিটারটি সরিয়ে strফাংশনটির মধ্যে দিয়ে প্রতিস্থাপন করা উচিত this:

String.prototype.truncate = String.prototype.truncate || 
function ( n, useWordBoundary ){
  if (this.length <= n) { return this; }
  const subString = this.substr(0, n-1); // the original check
  return (useWordBoundary 
    ? subString.substr(0, subString.lastIndexOf(" ")) 
    : subString) + "&hellip;";
};

আরও কৌতূহলী বিকাশকারীরা আপনাকে দৃ strongly়ভাবে কৃতিত্ব দিতে পারে (" আপনার নিজের অবজেক্টগুলিকে সংশোধন করবেন না "। যদিও এতে আমি আপত্তি করব না)।

Stringপ্রোটোটাইপটি বাড়ানো ছাড়াই একটি পদ্ধতিকে হ'ল আপনার নিজের সাহায্যকারী অবজেক্টটি তৈরি করুন, এতে আপনি প্রদত্ত (দীর্ঘ) স্ট্রিং এবং এটি কেটে দেওয়ার পূর্বনির্ধারিত পদ্ধতি রয়েছে। নীচের স্নিপেটটি এটি করে।

অবশেষে, আপনি কেবল HTML নোডগুলিতে দীর্ঘ স্ট্রিংগুলি কাটাতে সিএসএস ব্যবহার করতে পারেন। এটি আপনাকে কম নিয়ন্ত্রণ দেয়, তবে এটি কার্যকরী সমাধান হতে পারে।


5
"হার্ড" এবং "নরম" সীমাবদ্ধতাগুলিও বিবেচনা করা উচিত, যেমন, উদাহরণস্বরূপ, যদি স্ট্রিং 500 টির চেয়ে বেশি অক্ষরের হয় তবে এটি 400 এ কেটে ফেলুন This এটি কার্যকর হতে পারে, যখন ব্যবহারকারী পুরো লেখাটি দেখতে চান এবং কোনও লিঙ্কটি ক্লিক করেন এর জন্য. যদি, ফলস্বরূপ, আপনি কেবল 1 বা 2 টি চর বেশি লোড করেন তবে এটি সত্যিই খারাপ দেখাবে।
ম্যাক্সিম স্লোইকো

2
দ্বিতীয় পরামিতিটির substrদৈর্ঘ্য তাই এটি substr(0,n)প্রথম nঅক্ষরে সীমাবদ্ধ করার পরিবর্তে হওয়া উচিত ।
জনিএইচকে

10
আপনার মালিকানাধীন অবজেক্টগুলিকে সংশোধন করবেন না। nczonline.net/blog/2010/03/02/…
চার্লি কিলিয়ান

5
আপনি যে বিষয়টিকে বিবেচনা করতে পারেন তা হ'ল আপনার কোড উদাহরণে &hellip;প্রকৃত উপবৃত্ত ( ...) দিয়ে প্রতিস্থাপন করা । আপনি যদি এপিআই-এর সাথে কথোপকথনের জন্য এটি ব্যবহার করার চেষ্টা করছেন আপনি সেখানে অ-এইচটিএমএল সত্তাটি চাইবেন।
AlbertEngelB

1
@ রুনজেপ্পেন আপনি ঠিক বলেছেন পদ্ধতিগুলি সমন্বিত। আমার প্রতিরক্ষার পক্ষে: উত্তরের তারিখ 7 বছর আগের;)
KooiInc

62

নোট করুন যে এটি কেবল ফায়ারফক্সের জন্য করা দরকার।

অন্যান্য সমস্ত ব্রাউজার একটি সিএসএস সমাধান সমর্থন করে ( সমর্থন সারণী দেখুন ):

p {
    white-space: nowrap;
    width: 100%;                   /* IE6 needs any width */
    overflow: hidden;              /* "overflow" value must be different from  visible"*/ 
    -o-text-overflow: ellipsis;    /* Opera < 11*/
    text-overflow:    ellipsis;    /* IE, Safari (WebKit), Opera >= 11, FF > 6 */
}

বিড়ম্বনা হ'ল আমি কোড স্নিপেটটি মজিলা এমডিসি থেকে পেয়েছি।


1
mattsnider.com/css/css-string-truncation-with-ellipsis এফএফের সাথেও এটি কাজ করতে পারে।
নিল

বাহ এটি মোবাইল সাফারির জন্য একটি নিখুঁত সমাধান। ধন্যবাদ!
samvermette

9
খুব ভাল সিএসএস পদ্ধতির। একটি নোট থাকতে পারে, এটি কেবল পাঠের একক লাইনের সাথে (যেমনটি ইচ্ছাকৃত white-space: nowrap;) কাজ করে। যখন এটি একাধিক লাইনে আসে তখন আপনি জাভাস্ক্রিপ্টে আটকে থাকেন।
সন্নিবেশকৃত নাম এখানে

এটি শুধুমাত্র পুরো উপাদানটির জন্য কাজ করে। আপনি যদি কোনও স্ট্যান বা অন্য এইচটিএমএল উপাদানগুলিতে বিটটি মোড়ানো না করে কোনও স্ট্রিংয়ের অংশটি ছিন্ন করতে চান তবে এটি কাজ করবে না যেমন:Your picture ('some very long picture filename truncated...') has been uploaded.
ক্রিস

1
ওপি বিশেষত একটি জাভাস্ক্রিপ্ট সমাধানের জন্য জিজ্ঞাসা করেছিল
vsync

24

লোকেরা সিএসএসের পরিবর্তে জাভাস্ক্রিপ্টে এটি করতে চাইতে পারে এমন বৈধ কারণ রয়েছে।

জাভাস্ক্রিপ্টে 8 টি অক্ষর (উপবৃত্ত সহ) কেটে ফেলা:

short = long.replace(/(.{7})..+/, "$1&hellip;");

অথবা

short = long.replace(/(.{7})..+/, "$1…");

আপনি যদি উপবৃত্তিকে গণনা করেন তবে এটি 9 টি অক্ষর হবে। যদি আপনার এটি .replace(/^(.{7}).{2,}/, "$1…");
কাটা কাটার

longএবং shortপুরানো ECMAScript নির্দিষ্টকরণের (ECMAScript 1 পর্যন্ত 3) ভবিষ্যতের কীওয়ার্ড হিসাবে সংরক্ষিত। এমডিএন
রিকার্ডো


7

এখানে আমার সমাধানটি দেওয়া হয়েছে, যা অন্যান্য পরামর্শের তুলনায় কয়েকটি উন্নতি করেছে:

String.prototype.truncate = function(){
    var re = this.match(/^.{0,25}[\S]*/);
    var l = re[0].length;
    var re = re[0].replace(/\s$/,'');
    if(l < this.length)
        re = re + "&hellip;";
    return re;
}

// "This is a short string".truncate();
"This is a short string"

// "Thisstringismuchlongerthan25characters".truncate();
"Thisstringismuchlongerthan25characters"

// "This string is much longer than 25 characters and has spaces".truncate();
"This string is much longer&hellip;"

এটা তোলে:

  • 25 টি অক্ষরের পরে প্রথম স্থানে ছাঁটাইয়া দেয়
  • জাভাস্ক্রিপ্ট স্ট্রিং অবজেক্টটি প্রসারিত করে, তাই এটি কোনও স্ট্রিংয়ে (এবং শৃঙ্খলিত) ব্যবহৃত হতে পারে।
  • কাটছাঁটি একটি পিছনে স্থানের ফলাফল হিসাবে স্ট্রিং ছাঁটাবে;
  • যদি কাটা স্ট্রিং 25 টি অক্ষরের চেয়ে দীর্ঘ হয় তবে ইউনিকোড হরলিপ সত্তা (উপবৃত্ত) যুক্ত করবে

7

আমি খুঁজে পেয়েছি সেরা ফাংশন। পাঠ্য-উপবৃত্তাকারে ক্রেডিট ।

function textEllipsis(str, maxLength, { side = "end", ellipsis = "..." } = {}) {
  if (str.length > maxLength) {
    switch (side) {
      case "start":
        return ellipsis + str.slice(-(maxLength - ellipsis.length));
      case "end":
      default:
        return str.slice(0, maxLength - ellipsis.length) + ellipsis;
    }
  }
  return str;
}

উদাহরণ :

var short = textEllipsis('a very long text', 10);
console.log(short);
// "a very ..."

var short = textEllipsis('a very long text', 10, { side: 'start' });
console.log(short);
// "...ng text"

var short = textEllipsis('a very long text', 10, { textEllipsis: ' END' });
console.log(short);
// "a very END"

7
('long text to be truncated').replace(/(.{250})..+/, "$1…");

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

_.truncate('long text to be truncated', { 'length': 250, 'separator': ' '});

সুন্দর আধুনিক উত্তর!
ইয়াকোন্ডা

লেখাটি কী ছিল তা জানতে আগ্রহী হব। এটি কি ল্যাটিন-অক্ষর ব্যবহার করছিল?
অ্যাডাম লেগেট

এটি ছিল মাত্র একটি লম্পট ইপসাম
আফরাজ আহমেদ

5

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

p {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

(দ্রষ্টব্য যে এর কোনও প্রভাব ফেলতে উপাদানটির প্রস্থটি কোনও উপায়ে সীমিত করা দরকার))

Https://css-tricks.com/snippets/css/truncate-string-with-ellipsis/ এর উপর ভিত্তি করে ।

এটা লক্ষনীয় যে এই পদ্ধতির নেই না অক্ষর সংখ্যার উপর ভিত্তি করে সীমিত। আপনার যদি একাধিক লাইনের পাঠ্যের অনুমতি দেওয়ার দরকার হয় তবে এটিও কাজ করে না


2
এটি কেবল সিঙ্গল লাইনের বাক্যগুলির জন্যই কার্যকর, সিএসএসের মাধ্যমে বহু-লাইন উদাহরণ করার কোনও উপায় নেই (এখন পর্যন্ত আমি জানি)।
হুমান আসকারি

ডান পরিবর্তে বামদিকে উপবৃত্তটি এটি করার কোনও উপায় আছে কি?
গ্রিনএজেজেড 26'19

1
@ গ্রীনআসজেড আমি বিশ্বাস করি আপনি text-direction: rtlএবং ব্যবহারের মাধ্যমে এটি অর্জন করতে পারবেন text-align: leftডেভিডওয়ালস.নাম
শিন দ্য বিয়ান ২

4

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

প্রোটোটাইপের একটি উদাহরণ এখানে:

'Some random text'.truncate(10);
// -> 'Some ra...'

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


8
আমি মনে করি না jQuery এর এর জন্য কিছু আছে।
অ্যালেক্স

2
। Underscore.js আছে -: _ ( 'হ্যালো ওয়ার্ল্ড') আরোপ করা (5) => 'হ্যালো ...': _ ( 'হ্যালো') আরোপ করা (10) => 'হ্যালো'।
JayCrossler

3
খাঁটি অ্যান্ডস্কোরটিও নেই বলে মনে হচ্ছে truncate()- আপনার হয়তো বাড়ানো দরকার যেমন আন্ডারস্কোর স্ট্রিং
মার্টিন

2
এটি সম্পূর্ণ সঠিক উত্তর। আমি আন্ডারস্কোর সম্পর্কে জানি না, তবে লোডাশের রয়েছে _.truncযা ঠিক এটি করে।
বাম ক্লিক ক্লাবেন

2
আমি মনে করি সঠিক উত্তরটি হ'ল লোড্যাশ.ট্রুঙ্ক বা আন্ডারস্কোর.স্ট্রিং.আর্টআংকেট ব্যবহার করা।
ooোলালা

2

সম্ভবত আমি কোনও উদাহরণ নষ্ট করেছি যেখানে কেউ নালগুলি পরিচালনা করছে, তবে আমার শূন্য হওয়াতে 3 টি শীর্ষ উত্তর আমার পক্ষে কাজ করে নি (অবশ্যই আমি বুঝতে পারি যে ত্রুটি পরিচালনা করা এবং মিলিয়ন অন্যান্য বিষয় এই প্রশ্নের উত্তর দেওয়া ব্যক্তির দায়িত্ব নয়, তবে আমি ভাবলাম যে আমি এটি অন্যদের জন্য সরবরাহ করব এমন একটি চমত্কার উপবৃত্ত উত্তর সহ একটি বিদ্যমান ফাংশন ব্যবহার করেছি।

যেমন

জাভাস্ক্রিপ্ট:

news.comments

কাটা ফাংশন ব্যবহার করে

news.comments.trunc(20, true);

যাইহোক, নিউজ ডটকমের মন্তব্যগুলি শূন্য হওয়ার কারণে এটি "ব্রেক" হবে

চূড়ান্ত

checkNull(news.comments).trunc(20, true) 

ট্র্যাক ফাংশন সৌজন্যে কোইঙ্ক

String.prototype.trunc =
 function (n, useWordBoundary) {
     console.log(this);
     var isTooLong = this.length > n,
         s_ = isTooLong ? this.substr(0, n - 1) : this;
     s_ = (useWordBoundary && isTooLong) ? s_.substr(0, s_.lastIndexOf(' ')) : s_;
     return isTooLong ? s_ + '&hellip;' : s_;
 };

আমার সাধারণ নাল চেকার (আক্ষরিক "নাল" জিনিসগুলির জন্য চেকও করে (এটি ক্যাড অপরিবর্তিত, "", নাল, "নাল", ইত্যাদি ..)

  function checkNull(val) {
      if (val) {
          if (val === "null") {
              return "";
          } else {
              return val;
          }
      } else {
          return "";
      }
  }

এখানে একটি পরিবর্তিত সংস্করণ রয়েছে - প্রোটোটাইপ ব্যবহার এড়ানো যায়, ফাংশনে নাল চেকিং অন্তর্ভুক্ত করে এবং এর কিছু পরীক্ষা / ডেমো ব্যবহার রয়েছে। codepen.io/mahemoff/pen/LGEdzy
mahemoff

প্রোটোটাইপ সমস্যাযুক্ত বলে মনে করেন? কেবল কৌতূহলী
টম স্টিকেল

আমার পৃথক নাল চেক ফাংশনের কারণ হ'ল এটি নাল, অপরিজ্ঞাত, এনএএন, খালি স্ট্রিং (""), 0, মিথ্যা এবং "নাল" যাচাই করবে তবে সামগ্রিকভাবে আমি আপনার এফএক্স পছন্দ করি
টম স্টিকেল

1
হ্যাঁ, এটি মতামত এবং ব্যবহারের প্রসঙ্গের বিষয়, তবে আপনি অন্যান্য লাইব্রেরির সাথে কাজ করার সময় প্রোটোটাইপটি কুরুচিপূর্ণ হয় কারণ তারা একই জিনিসটিকে ওভাররাইড করতে পারে। (বা বিরল ক্ষেত্রে একই নামের কোনও ফাংশন পরে স্ট্যান্ডার্ড ভাষার বৈশিষ্ট্য হিসাবে পরিচিত হতে পারে))
মাহেমফ

হ্যাঁ, আমি আপনার সাথে একমত
টম স্টিকেল

2

কখনও কখনও ফাইলের নামগুলি নম্বরযুক্ত হয়, যেখানে সূচকটি শুরুতে বা শেষে হতে পারে at সুতরাং আমি স্ট্রিংয়ের কেন্দ্র থেকে ছোট করতে চেয়েছি:

function stringTruncateFromCenter(str, maxLength) {
    const midChar = "…";      // character to insert into the center of the result
    var left, right;

    if (str.length <= maxLength) return str;

    // length of beginning part      
    left = Math.ceil(maxLength / 2);

    // start index of ending part   
    right = str.length - Math.floor(maxLength / 2) + 1;   

    return str.substr(0, left) + midChar + str.substring(right);
}

সচেতন থাকুন যে আমি ইউটিএফ -8 এ 1 বাইটের বেশি সহ এখানে একটি ফিল ফিল্টার ব্যবহার করেছি।



1

আমি কোল্যাঙ্কের সমাধানটিকে অগ্রাহ্য করেছি। সত্যিই দুর্দান্ত কমপ্যাক্ট সমাধান। একটি ছোট প্রান্তের কেস রয়েছে যা আমি সম্বোধন করতে চাই। যদি কেউ যে কোনও কারণে সত্যই দীর্ঘ চরিত্রের অনুক্রমে প্রবেশ করে তবে তা কেটে যাবে না:

function truncate(str, n, useWordBoundary) {
    var singular, tooLong = str.length > n;
    useWordBoundary = useWordBoundary || true;

    // Edge case where someone enters a ridiculously long string.
    str = tooLong ? str.substr(0, n-1) : str;

    singular = (str.search(/\s/) === -1) ? true : false;
    if(!singular) {
      str = useWordBoundary && tooLong ? str.substr(0, str.lastIndexOf(' ')) : str;
    }

    return  tooLong ? str + '&hellip;' : str;
}

1

একটি দ্রুত Googling আমি পেয়েছি, এই আপনার জন্য যে কাজ ... করে?

/**
 * Truncate a string to the given length, breaking at word boundaries and adding an elipsis
 * @param string str String to be truncated
 * @param integer limit Max length of the string
 * @return string
 */
var truncate = function (str, limit) {
    var bits, i;
    if (STR !== typeof str) {
        return '';
    }
    bits = str.split('');
    if (bits.length > limit) {
        for (i = bits.length - 1; i > -1; --i) {
            if (i > limit) {
                bits.length = i;
            }
            else if (' ' === bits[i]) {
                bits.length = i;
                break;
            }
        }
        bits.push('...');
    }
    return bits.join('');
};
// END: truncate

1

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

.wrap{
  text-overflow: ellipsis
  white-space: nowrap;
  overflow: hidden;
  width:"your desired width";
}
<p class="wrap">The string to be cut</p>

1
ব্রেভিটি গ্রহণযোগ্য, তবে পূর্ণাঙ্গ ব্যাখ্যা আরও ভাল।
আরমালি

এমওয়িলকক্স এবং দ্য বিয়ান ইতিমধ্যে এই সমাধান পোস্ট করেছে।
অ্যান্ড্রু মায়ার্স

1
কেবলমাত্র এক-লাইন পাঠ্যের জন্য ব্যবহার করা যেতে পারে
ভ্যালি পেপিয়াকো

পাঠ্য-ওভারফ্লো: উপবৃত্ত নিখুঁত !!
জারডিলিয়ার

0

সি_হর্মের উত্তর আমার মতে সেরা। আপনি যদি ব্যবহার করতে চান দয়া করে নোট করুন

"My string".truncate(n)

আপনাকে আক্ষরিক পরিবর্তে একটি রেজিপ্সপ অবজেক্ট কনস্ট্রাক্টর ব্যবহার করতে হবে। \Sএটিকে রূপান্তর করার সময় আপনাকে পালাতে হবে।

String.prototype.truncate =
    function(n){
        var p  = new RegExp("^.{0," + n + "}[\\S]*", 'g');
        var re = this.match(p);
        var l  = re[0].length;
        var re = re[0].replace(/\s$/,'');

        if (l < this.length) return re + '&hellip;';
    };

প্রত্যেকটি মন্তব্য এবং সঠিক পরিবর্তনশীল নামকরণের কথা শুনেছেন?
সাইকেল

@ সাইকেলের উপরের অন্য উত্তর থেকে কোডটি অনুলিপি করা হয়েছে এবং সংশোধন করা হয়েছে, এতটা অভদ্র এবং জঘন্য হতে হবে না।
ম্যাট ফ্লেচার

0

নিম্নলিখিত কোড ব্যবহার করুন

 function trancateTitle (title) {
    var length = 10;
    if (title.length > length) {
       title = title.substring(0, length)+'...';
    }
    return title;
}

0

কোলঙ্কের সমাধান সংশোধন করা হচ্ছে:

String.prototype.trunc = String.prototype.trunc ||
  function(n){
      return this.length>n ? this.substr(0,n-1)+'&hellip;' : this.toString();
  };

এটি স্ট্রিং অবজেক্টের পরিবর্তে স্ট্রিংয়ের মান প্রদান করে যদি এটি কাটার প্রয়োজন হয় না।


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

আহ আমি এখন পার্থক্য দেখছি। রেফারেন্সের জন্য ধন্যবাদ। @ কুলঙ্ক এটি দেখতে পাবে এই আশা নিয়ে আমি কোনও মন্তব্য দিতে চাইনি, এবং সম্ভবত তিনি অনুমোদিত উত্তরগুলি সম্পাদনা করুন যদি সে রাজি হয় তবে সেটির সুনাম ছিল না।
qwales1

0

আমি সম্প্রতি এটি করতে হয়েছিল এবং এর সাথে শেষ করেছিলাম:

/**
 * Truncate a string over a given length and add ellipsis if necessary
 * @param {string} str - string to be truncated
 * @param {integer} limit - max length of the string before truncating
 * @return {string} truncated string
 */
function truncate(str, limit) {
    return (str.length < limit) ? str : str.substring(0, limit).replace(/\w{3}$/gi, '...');
}

আমার কাছে সুন্দর এবং পরিষ্কার মনে হচ্ছে :)


1
এটি ফলস্বরূপ স্ট্রিংটি 3 টি সীমা থেকে দীর্ঘতর করতে পারে।
Hauke

0

আমি .স্লাইস () ব্যবহার করতে পছন্দ করি প্রথম যুক্তিটি সূচনা সূচক এবং দ্বিতীয়টি শেষ সূচক the এর মধ্যে থাকা সমস্ত কিছু যা আপনি ফিরে পাবেন।

var long = "hello there! Good day to ya."
// hello there! Good day to ya.

var short  = long.slice(0, 5)
// hello

0

কোথাও স্মার্ট: ডি

//My Huge Huge String
    let tooHugeToHandle = `It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).`
    
//Trim Max Length
 const maxValue = 50
// The barber.
 const TrimMyString = (string, maxLength, start = 0) => {
//Note - `start` is if I want to start after some point of the string
    	if (string.length > maxLength) {
    	let trimmedString = string.substr(start, maxLength)
    	 return (
    	   trimmedString.substr(
    	   start,
    	   Math.min(trimmedString.length,   trimmedString.lastIndexOf(' '))
           ) + ' ...'
         )
       }
    return string
}

console.log(TrimMyString(tooHugeToHandle, maxValue))


-1

এই ফাংশনটি ছাঁটাই স্থান এবং শব্দের অংশগুলিও করে।

String.prototype.truc= function (length) {
        return this.length>length ? this.substring(0, length) + '&hellip;' : this;
};

ব্যবহার:

"this is long length text".trunc(10);
"1234567890".trunc(5);

আউটপুট:

এই তো ...

12345 ...

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