জাভাস্ক্রিপ্টে শব্দ না কেটে স্ট্রিং ছোট করুন


105

আমি জাভাস্ক্রিপ্টে স্ট্রিং ম্যানিপুলেশনের সাথে খুব ভাল নই এবং আমি ভাবছিলাম যে কোনও শব্দ ছাড়াই আপনি কীভাবে একটি স্ট্রিং সংক্ষিপ্ত করবেন about আমি জানি কীভাবে সাবস্ট্রিং ব্যবহার করতে হয় তবে ইন্ডেক্সঅফ বা সত্যিকার অর্থে ভাল কিছু নয়।

বলুন আমার নিম্নলিখিত স্ট্রিং ছিল:

text = "this is a long string I cant display"

আমি এটি 10 ​​টি অক্ষরে ট্রিম করতে চাই, তবে এটি যদি কোনও স্থান দিয়ে শেষ না হয় তবে শব্দটি শেষ করুন। আমি স্ট্রিং ভেরিয়েবলটি দেখতে চাই না:

"এটি একটি দীর্ঘ স্ট্রিং আমি ব্যর্থ না"

আমি চাই কোনও স্থান না হওয়া পর্যন্ত শব্দটি শেষ করুন।


আপনি একটি স্ট্রিম ছাঁটাই মানে? চেষ্টা করুন" too many spaces ".trim()
অনুরাগ

4
কিছু উদাহরণ ইনপুট এবং প্রত্যাশিত আউটপুট এই প্রশ্নের উত্তর দিতে অনেক সহায়তা করবে।
প্রতারণা করুন

ঠিক আছে দুঃখিত বলুন আমার কাছে স্ট্রিং টেক্সট ছিল = "এটি একটি দীর্ঘ স্ট্রিং আমি ক্যান্ট ডিসপ্লে" আমি এটিকে 10 টি অক্ষরে ছাঁটাই করতে চাই তবে এটি যদি একটি স্পেস দিয়ে শেষ না হয় তবে শব্দটি স্ট্রিং ভেরিয়েবলের মতো দেখতে চাই না i এটি "এটি একটি দীর্ঘ স্ট্রিং আমি ক্যান্ট ডিস"
জোশ বেদো

উত্তর:


181

যদি আমি সঠিকভাবে বুঝতে পারি তবে আপনি একটি স্ট্রিং নির্দিষ্ট দৈর্ঘ্যে ছোট করতে চান (উদাহরণস্বরূপ "The quick brown fox jumps over the lazy dog"কোনও শব্দ না কেটে 6 টি অক্ষর ছোট করুন )।

যদি এটি হয় তবে আপনি নীচের মতো কিছু চেষ্টা করতে পারেন:

var yourString = "The quick brown fox jumps over the lazy dog"; //replace with your string.
var maxLength = 6 // maximum number of characters to extract

//Trim and re-trim only when necessary (prevent re-trim when string is shorted than maxLength, it causes last word cut) 
if(yourString.length > trimmedString.length){
    //trim the string to the maximum length
    var trimmedString = yourString.substr(0, maxLength);

    //re-trim if we are in the middle of a word and 
    trimmedString = trimmedString.substr(0, Math.min(trimmedString.length, trimmedString.lastIndexOf(" ")))
}

9
@ জোশ এটি একেবারেই সত্য নয় যে ".রেপস" "jQuery ফাংশন" এ কাজ করে না। "JQuery ফাংশন" এর মতো কোনও জিনিস নেই।
পয়েন্টি

4
এটি "সর্বোচ্চ দৈর্ঘ্য + 1" হওয়া উচিত নয়। এবং যদি সর্বোচ্চ অক্ষরটি সম্পূর্ণ বাক্য দৈর্ঘ্যের চেয়ে বড় বা সমান হয় তবে শেষের শব্দটি অন্তর্ভুক্ত হয় না। তবে সমাধানের জন্য ধন্যবাদ
বায়টান কার্ট

4
যদি এটি সর্বাধিকের চেয়ে কমের স্ট্রিংয়ে ব্যবহার করা হয় তবে শেষ শব্দটি কেটে যায়। হতে পারে @ অ্যান্ড্রু জুনিয়র হাওয়ার্ড ইতিমধ্যে এটির ( maxLength + 1) এর জন্য ঠিক করে দিয়েছেন , তবে আমি কেবল এই লাইনটি উপরে উপরে যুক্ত করে সংশোধন করেছি:var yourString += " ";
টাইলার

4
দুর্ভাগ্যক্রমে, আপনি যদি fox jumps over the lazy dogঅংশটি গ্রহণ করেন তবে ফলাফলটি কখনই হওয়া The quick brown উচিত The quick brown fox
আন্দ্রে গর্দিভ

4
এটি সর্বদা সর্বশেষ শব্দটি কেটে দেয়।
ক্রিস সিনেলি

114

এটি করার অনেকগুলি উপায় রয়েছে তবে একটি নিয়মিত প্রকাশটি হ'ল এক লাইনের পদ্ধতি:

"this is a longish string of text".replace(/^(.{11}[^\s]*).*/, "$1"); 
//"this is a longish"

এই এক্সপ্রেশনটি প্রথম 11 (যে কোনও) অক্ষর এবং পরবর্তী কোনও অ-স্পেস অক্ষর প্রদান করে।

উদাহরণ লিপি:

<pre>
<script>
var t = "this is a longish string of text";

document.write("1:   " + t.replace(/^(.{1}[^\s]*).*/, "$1") + "\n");
document.write("2:   " + t.replace(/^(.{2}[^\s]*).*/, "$1") + "\n");
document.write("5:   " + t.replace(/^(.{5}[^\s]*).*/, "$1") + "\n");
document.write("11:  " + t.replace(/^(.{11}[^\s]*).*/, "$1") + "\n");
document.write("20:  " + t.replace(/^(.{20}[^\s]*).*/, "$1") + "\n");
document.write("100: " + t.replace(/^(.{100}[^\s]*).*/, "$1") + "\n");
</script>

আউটপুট:

1:   this
2:   this
5:   this is
11:  this is a longish
20:  this is a longish string
100: this is a longish string of text

আশ্চর্যজনক, আমি আক্ষরিকভাবে এই প্রশ্নটি কয়েক মিলিয়ন উপায়ে গুগল করেছিলাম এবং কেবল পিএইচপি এর নিকটবর্তী এবং লুপগুলি জড়িত কিছুই খুঁজে পাওয়ার জন্য একটি কার্যকারী সংস্করণ খুঁজে পাই।
জোশ বেদো

4
এটি প্রথম (এবং কেবলমাত্র, এক্ষেত্রে) সাব এক্সপ্রেশন ম্যাচের উল্লেখ করছে - বন্ধনীগুলির স্টাফ। $ 0 পুরো ম্যাচটি বোঝায়, যা এই ক্ষেত্রে পুরো স্ট্রিং।
হামিশ

4
@ জোশ আপনার রিজেক্সএক্স অবজেক্টটি ব্যবহার করে সর্বোচ্চ দৈর্ঘ্যকে পরিবর্তনশীল করতে সক্ষম হওয়া উচিত:t.replace(new RegExp("^(.{"+length+"}[^\s]*).*"), "$1")
rjmackay

4
@ হামিশ আপনার বিকল্পটি ভালভাবে কাজ করে, তবে দৈর্ঘ্য বেশি হলে এটি শেষ শব্দটিও অন্তর্ভুক্ত করে। আমি সর্বাধিক শব্দ সীমা ছাড়িয়ে গেলেও এটি কাজ না করে শেষ শব্দটি বাদ দেওয়ার জন্য রেজেক্স এক্সপ্রেশনটি পরিবর্তনের চেষ্টা করেছি। কীভাবে আমরা তা অর্জন করতে পারি?
শশাঙ্ক অগ্রওয়াল

4
ঠিক আছে, এটি সত্যই সঠিকভাবে কাজ করছে না, কখনও কখনও আমি সর্বাধিক মানটি উদাহরণস্বরূপ পাস করি যদি শেষ শব্দটি ইতিমধ্যে 30 অক্ষর হয় তবে এটি ইতিমধ্যে 60 এরও বেশি দৈর্ঘ্যের হবে! এমনকি যদি এর দৈর্ঘ্য নির্ধারণ করা হয়{30}
আল-মোতাফফার

66

আমি একপ্রকার অবাক হই যে এর মতো সরল সমস্যার জন্য এমন অনেক উত্তর রয়েছে যা পড়া কঠিন এবং বেছে নেওয়া নির্বাচিত সহ কয়েকটি কাজ করে না।

আমি সাধারণত চাইছি ফলাফলের স্ট্রিং সর্বাধিক maxLen অক্ষরে থাকুক । আমি এই একই ফাংশনটি ইউআরএলগুলির স্লাগগুলি সংক্ষিপ্ত করতেও ব্যবহার করি।

str.lastIndexOf(searchValue[, fromIndex]) একটি দ্বিতীয় প্যারামিটার নেয় যা সূচকটি যাতে স্ট্রিংগুলিতে দক্ষ এবং সাধারণ তৈরি করে পিছনে সন্ধান শুরু করতে হয়।

// Shorten a string to less than maxLen characters without truncating words.
function shorten(str, maxLen, separator = ' ') {
  if (str.length <= maxLen) return str;
  return str.substr(0, str.lastIndexOf(separator, maxLen));
}

এটি একটি নমুনা আউটপুট:

for (var i = 0; i < 50; i += 3) 
  console.log(i, shorten("The quick brown fox jumps over the lazy dog", i));

 0 ""
 3 "The"
 6 "The"
 9 "The quick"
12 "The quick"
15 "The quick brown"
18 "The quick brown"
21 "The quick brown fox"
24 "The quick brown fox"
27 "The quick brown fox jumps"
30 "The quick brown fox jumps over"
33 "The quick brown fox jumps over"
36 "The quick brown fox jumps over the"
39 "The quick brown fox jumps over the lazy"
42 "The quick brown fox jumps over the lazy"
45 "The quick brown fox jumps over the lazy dog"
48 "The quick brown fox jumps over the lazy dog"

এবং স্লাগ জন্য:

for (var i = 0; i < 50; i += 10) 
  console.log(i, shorten("the-quick-brown-fox-jumps-over-the-lazy-dog", i, '-'));

 0 ""
10 "the-quick"
20 "the-quick-brown-fox"
30 "the-quick-brown-fox-jumps-over"
40 "the-quick-brown-fox-jumps-over-the-lazy"

4
আমি সর্বশেষে সর্বশেষ ইন্ডেক্সএক্স () সম্পর্কে ভুলে গেছি। ভালো বল ধরা!
টিকি

4
কোনও কারণে যদি এটি ক্রাশ strহয় undefined। আমি যোগ করেছিif (!str || str.length <= maxLen) return str;
সিলভাইন

এটি প্রান্তের
কেসটি

@ শ্র্যুইয়েস্ট এটি কাজ করে। বিভাজক স্ট্রিং না থাকলে, স্ট্রিংটি নিজেই প্রদান করে যদি str.length <= maxLen। অন্যথায় এটি একটি খালি স্ট্রিং দেয়।
ক্রিস সিনেলি

22

প্রত্যেকে ভুলে গেছে বলে মনে হয় যে সূচি মিলিয়ে যাওয়ার জন্য স্ট্রিং এবং চরিত্র সূচকটি দুটি আর্গুমেন্ট নেয় from আপনি 10 টি অক্ষরের পরে প্রথম স্থানে স্ট্রিংটি ভাঙ্গতে পারেন।

function cutString(s, n){
    var cut= s.indexOf(' ', n);
    if(cut== -1) return s;
    return s.substring(0, cut)
}
var s= "this is a long string i cant display";
cutString(s, 10)

/*  returned value: (String)
this is a long
*/

মনে রাখবেন যে হার্ড সীমানার প্রয়োজন হলে সর্বশেষ তালিকাতে সূচিপত্র প্রতিস্থাপন করা যেতে পারে।
স্কিনটড

14

লোড্যাশের বিশেষভাবে এটির জন্য রচনা করা একটি ফাংশন রয়েছে: _.truncate

const truncate = _.truncate
const str = 'The quick brown fox jumps over the lazy dog'

truncate(str, {
  length: 30, // maximum 30 characters
  separator: /,?\.* +/ // separate by spaces, including preceding commas and periods
})

// 'The quick brown fox jumps...'

7

এনটি 3 আরপি উত্তরের ভিত্তিতে যা কোনও কোণার কেসগুলি পরিচালনা করে না, আমি এই কোডটি তৈরি করেছি। এটি কোনও আকার> ম্যাক্সেল দৈর্ঘ্যের ইভেন্টের একটি এলিপিসিস সহ কোনও পাঠ্য ফেরত না দেওয়ার গ্যারান্টি দেয়... শেষে হয়েছিল।

এটি এমন কোনও কোণার কেসকেও হ্যান্ডেল করে যেমন কোনও পাঠ্য যার একটি শব্দ> সর্বোচ্চ দৈর্ঘ্য

shorten: function(text,maxLength,options) {
    if ( text.length <= maxLength ) {
        return text;
    }
    if ( !options ) options = {};
    var defaultOptions = {
        // By default we add an ellipsis at the end
        suffix: true,
        suffixString: " ...",
        // By default we preserve word boundaries
        preserveWordBoundaries: true,
        wordSeparator: " "
    };
    $.extend(options, defaultOptions);
    // Compute suffix to use (eventually add an ellipsis)
    var suffix = "";
    if ( text.length > maxLength && options.suffix) {
        suffix = options.suffixString;
    }

    // Compute the index at which we have to cut the text
    var maxTextLength = maxLength - suffix.length;
    var cutIndex;
    if ( options.preserveWordBoundaries ) {
        // We use +1 because the extra char is either a space or will be cut anyway
        // This permits to avoid removing an extra word when there's a space at the maxTextLength index
        var lastWordSeparatorIndex = text.lastIndexOf(options.wordSeparator, maxTextLength+1);
        // We include 0 because if have a "very long first word" (size > maxLength), we still don't want to cut it
        // But just display "...". But in this case the user should probably use preserveWordBoundaries:false...
        cutIndex = lastWordSeparatorIndex > 0 ? lastWordSeparatorIndex : maxTextLength;
    } else {
        cutIndex = maxTextLength;
    }

    var newText = text.substr(0,cutIndex);
    return newText + suffix;
}

আমি অনুমান করি আপনি যদি খুব বিরক্ত হন তবে আপনি সহজেই jquery নির্ভরতা সরিয়ে ফেলতে পারবেন।


4
আমি এই সমাধানটি পছন্দ করি, তবে কি আরগগুলি $.extendবিপরীত হওয়ার জন্য পাস করা উচিত নয় ?
JKesMc9tqIQe9M

7

এখানে এক লাইনে একটি সমাধান।

text = "this is a long string I cant display"

function shorten(text,max) {
    return text && text.length > max ? text.slice(0,max).split(' ').slice(0, -1).join(' ') : text
}


console.log(shorten(text,10));


3

আমি পার্টিতে দেরি করেছি, তবে এখানে একটি ছোট এবং সহজ সমাধান আমি নিয়ে এসেছি প্রচুর শব্দ ফিরে আসার জন্য।

এটি আপনার চরিত্রগুলির প্রয়োজনীয়তার সাথে সরাসরি সম্পর্কিত নয় , তবে এটি একই পরিণতি পরিবেশন করে যা আমি বিশ্বাস করি যে আপনি পরে এসেছিলেন।

function truncateWords(sentence, amount, tail) {
  const words = sentence.split(' ');

  if (amount >= words.length) {
    return sentence;
  }

  const truncated = words.slice(0, amount);
  return `${truncated.join(' ')}${tail}`;
}

const sentence = 'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.';

console.log(truncateWords(sentence, 10, '...'));

কাজের উদাহরণটি এখানে দেখুন: https://jsfiddle.net/bx7rojgL/


আপনি একটি জেএস ফাংশন লিখেছেন যা একটি স্ট্রিংকে অনেকগুলি শব্দের সাথে বিচ্ছিন্ন করে। প্রশ্নটি আবার পড়ুন।
ক্রিস্টোকিউই 17:58

4
eeehm। আমি মনে করি এটি প্রশ্নের একমাত্র সঠিক উত্তর। কথা না কেটে জিজ্ঞাসা করলেন তিনি।
মাইক অ্যারন

2

এটি অন্তর্ভুক্ত করার পরিবর্তে চূড়ান্ত শব্দ বাদ দেয়।

function smartTrim(str, length, delim, appendix) {
    if (str.length <= length) return str;

    var trimmedStr = str.substr(0, length+delim.length);

    var lastDelimIndex = trimmedStr.lastIndexOf(delim);
    if (lastDelimIndex >= 0) trimmedStr = trimmedStr.substr(0, lastDelimIndex);

    if (trimmedStr) trimmedStr += appendix;
    return trimmedStr;
}

ব্যবহার:

smartTrim(yourString, 11, ' ', ' ...')
"The quick ..."

2

আমি একটি ভিন্ন পন্থা গ্রহণ। যখন আমার অনুরূপ ফলাফলের প্রয়োজন হয়েছিল তখন আমি আমার ফেরতের মান নির্দিষ্ট দৈর্ঘ্যের চেয়ে কম রাখতে চাই।

function wordTrim(value, length, overflowSuffix) {
    value = value.trim();
    if (value.length <= length) return value;
    var strAry = value.split(' ');
    var retString = strAry[0];
    for (var i = 1; i < strAry.length; i++) {
        if (retString.length >= length || retString.length + strAry[i].length + 1 > length) break;
        retString += " " + strAry[i];
    }
    return retString + (overflowSuffix || '');
}

সম্পাদনা করুন আমি এটি এখানে কিছুটা রিফেক্টর করেছি : জেএসফিডাল উদাহরণ । এটি কনটেটেটিংয়ের পরিবর্তে আসল অ্যারেটিতে পুনরায় যোগদান করে।

function wordTrim(value, length, overflowSuffix) {
    if (value.length <= length) return value;
    var strAry = value.split(' ');
    var retLen = strAry[0].length;
    for (var i = 1; i < strAry.length; i++) {
        if(retLen == length || retLen + strAry[i].length + 1 > length) break;
        retLen+= strAry[i].length + 1
    }
    return strAry.slice(0,i).join(' ') + (overflowSuffix || '');
}

2
function shorten(str,n) {
  return (str.match(RegExp(".{"+n+"}\\S*"))||[str])[0];
}

shorten("Hello World", 3); // "Hello"


1

আপনি truncateনীচে ওয়ান-লাইনার ব্যবহার করতে পারেন :

const text = "The string that I want to truncate!";

const truncate = (str, len) => str.substring(0, (str + ' ').lastIndexOf(' ', len));

console.log(truncate(text, 14));


1
shorten(str, maxLen, appendix, separator = ' ') {
if (str.length <= maxLen) return str;
let strNope = str.substr(0, str.lastIndexOf(separator, maxLen));
return (strNope += appendix);

}

var s = "এটি একটি দীর্ঘ স্ট্রিং এবং আমি সমস্ত ব্যাখ্যা করতে পারি না"; সংক্ষিপ্ত (গুলি, 10, '...')

/* "এই .." */


1

এখানে আরও একটি কোডের টুকরোগুলি রয়েছে যা বিরাম চিহ্নগুলির সাথে বিচ্ছিন্ন করে দেয় (এটি খুঁজছিল এবং গুগল এই প্রশ্নটি এখানে পেয়েছিল)। আমার নিজের একটি সমাধান নিয়ে আসতে হবে, তাই আমি 15 মিনিটে হ্যাক করেছি। এর সমস্ত উপস্থিতি সন্ধান করে। ! ? এবং এর চেয়ে যে কোনও অবস্থানের চেয়ে <কে <len

function pos(str, char) {
    let pos = 0
    const ret = []
    while ( (pos = str.indexOf(char, pos + 1)) != -1) {
        ret.push(pos)
    }
    return ret
}

function truncate(str, len) {
    if (str.length < len)
        return str

    const allPos = [  ...pos(str, '!'), ...pos(str, '.'), ...pos(str, '?')].sort( (a,b) => a-b )
    if (allPos.length === 0) {
        return str.substr(0, len)
    }

    for(let i = 0; i < allPos.length; i++) {
        if (allPos[i] > len) {
            return str.substr(0, allPos[i-1] + 1)
        }
    }
}

module.exports = truncate

1

টাইপস্ক্রিপ্ট এবং উপবৃত্ত সহ :)

export const sliceByWord = (phrase: string, length: number, skipEllipses?: boolean): string => {
  if (phrase.length < length) return phrase
  else {
    let trimmed = phrase.slice(0, length)
    trimmed = trimmed.slice(0, Math.min(trimmed.length, trimmed.lastIndexOf(' ')))
    return skipEllipses ? trimmed : trimmed + '…'
  }
}

1

'টমেটো এবং পালং সঙ্গে পাস্তা'

আপনি যদি শব্দটি অর্ধেক না কাটতে চান

প্রথম পুনরাবৃত্তি:

acc: 0 / acc + cur.length = 5 / newTitle = ['পাস্তা'];

দ্বিতীয় পুনরাবৃত্তি:

acc: 5 / acc + cur.length = 9 / newTitle = ['পাস্তা', 'সহ'];

তৃতীয় পুনরাবৃত্তি:

acc: 9 / acc + cur.length = 15 / newTitle = ['পাস্তা', 'সহ', 'টমেটো'];

চতুর্থ পুনরাবৃত্তি:

acc: 15 / acc + cur.length = 18 (সীমাবদ্ধ আবদ্ধ) / newTitle = ['পাস্তা', 'সহ', 'টমেটো'];

const limitRecipeTitle = (title, limit=17)=>{
    const newTitle = [];
    if(title.length>limit){
        title.split(' ').reduce((acc, cur)=>{
            if(acc+cur.length <= limit){
                newTitle.push(cur);
            }
            return acc+cur.length;
        },0);
    }

    return `${newTitle.join(' ')} ...`
}

আউটপুট: টমেটো সহ পাস্তা ...


এটি 'যোগদান' ('') অক্ষরের জন্য অ্যাকাউন্ট করে না, যা স্ট্রিংটিকে সীমা ছাড়িয়ে দীর্ঘ করতে পারে। আপনি যদি () এর ফাংশনকে (acc, cur, idx) এবং (if + (cur + দৈর্ঘ্য <= সীমা - idx) এ হ্রাস করেন তবে শব্দগুলি একসাথে যুক্ত হয়ে গেলে এটি অতিরিক্ত স্পেসের জন্য অ্যাকাউন্ট করবে। সীমাবদ্ধতার মধ্যে কঠোরভাবে হওয়া প্রয়োজন।
পিএসএল

0

এটির পক্ষে মূল্যবান বিষয়গুলির জন্য আমি স্ট্রিংয়ের শেষে বিরামচিহ্ন বা হোয়াইটস্পেস না রেখে শব্দের সীমানায় কাটানোর জন্য এটি লিখেছিলাম:

function truncateStringToWord(str, length, addEllipsis)
{
    if(str.length <= length)
    {
        // provided string already short enough
        return(str);
    }

    // cut string down but keep 1 extra character so we can check if a non-word character exists beyond the boundary
    str = str.substr(0, length+1);

    // cut any non-whitespace characters off the end of the string
    if (/[^\s]+$/.test(str))
    {
        str = str.replace(/[^\s]+$/, "");
    }

    // cut any remaining non-word characters
    str = str.replace(/[^\w]+$/, "");

    var ellipsis = addEllipsis && str.length > 0 ? '&hellip;' : '';

    return(str + ellipsis);
}

var testString = "hi stack overflow, how are you? Spare";
var i = testString.length;

document.write('<strong>Without ellipsis:</strong><br>');

while(i > 0)
{
  document.write(i+': "'+ truncateStringToWord(testString, i) +'"<br>');
  i--;
}

document.write('<strong>With ellipsis:</strong><br>');

i = testString.length;
while(i > 0)
{
  document.write(i+': "'+ truncateStringToWord(testString, i, true) +'"<br>');
  i--;
}


0

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

    function chopTxtMinMax(txt, firstChar, lastChar=0){
        var wordsArr = txt.split(" ");
        var newWordsArr = [];

        var totalIteratedChars = 0;
        var inclSpacesCount = true;

        for(var wordIndx in wordsArr){
            totalIteratedChars += wordsArr[wordIndx].length + (inclSpacesCount ? 1 : 0);
            if(totalIteratedChars >= firstChar && (totalIteratedChars <= lastChar || lastChar==0)){
                newWordsArr.push(wordsArr[wordIndx]);
            }
        }

        txt = newWordsArr.join(" ");
        return txt;
    }

0

আমি এর জন্য দেরি করে এসেছি তবে আমি মনে করি যে এই ফাংশনটি ওপি অনুরোধ করে ঠিক তাই করে। আপনি সহজেই বিভিন্ন ফলাফলের জন্য SENTENCE এবং LIMIT মানগুলি পরিবর্তন করতে পারেন।

function breakSentence(word, limit) {
  const queue = word.split(' ');
  const list = [];

  while (queue.length) {
    const word = queue.shift();

    if (word.length >= limit) {
      list.push(word)
    }
    else {
      let words = word;

      while (true) {
        if (!queue.length ||
            words.length > limit ||
            words.length + queue[0].length + 1 > limit) {
          break;
        }

        words += ' ' + queue.shift();
      }

      list.push(words);
    }
  }

  return list;
}

const SENTENCE = 'the quick brown fox jumped over the lazy dog';
const LIMIT = 11;

// get result
const words = breakSentence(SENTENCE, LIMIT);

// transform the string so the result is easier to understand
const wordsWithLengths = words.map((item) => {
  return `[${item}] has a length of - ${item.length}`;
});

console.log(wordsWithLengths);

এই স্নিপেটের আউটপুট হ'ল লিমিটেড হ'ল 11:

[ '[the quick] has a length of - 9',
  '[brown fox] has a length of - 9',
  '[jumped over] has a length of - 11',
  '[the lazy] has a length of - 8',
  '[dog] has a length of - 3' ]

0

খালি বাক্য এবং খুব দীর্ঘ প্রথম শব্দের মতো সীমানা শর্তের সাথে। এছাড়াও এটি কোনও ভাষা নির্দিষ্ট স্ট্রিং এপিআই / লাইব্রেরি ব্যবহার করে না।

function solution(message, k) {
    if(!message){
        return ""; //when message is empty
    }
    const messageWords = message.split(" ");
    let result = messageWords[0];
    if(result.length>k){
        return ""; //when length of first word itself is greater that k
    }
    for(let i = 1; i<messageWords.length; i++){
        let next = result + " " + messageWords[i];

        if(next.length<=k){
            result = next;
        }else{
            break;
        }
    }
    return result;
}

console.log(solution("this is a long string i cant display", 10));


0

আমরা লডাশের কাটা ফাংশনটি ব্যবহার করে এটি সহজেই করতে পারি

_.truncate('hi-diddly-ho there, neighborino');
// => 'hi-diddly-ho there, neighbo...'

_.truncate('hi-diddly-ho there, neighborino', {
  'length': 24,
  'separator': ' '
 });
// => 'hi-diddly-ho there,...'

আরও ক্লিয়ারেন্সের জন্য লোড্যাশ ডকুমেন্টেশনটিতে যান।


-1

আপনি এটি দিয়ে স্পেসগুলি ছাঁটাই করতে পারেন:

var trimmedString = flabbyString.replace(/^\s*(.*)\s*$/, '$1');

-1

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

codepen.io

var yourString = "The quick brown fox jumps over the lazy dog"; //replace with your string.
var maxLength = 15 // maximum number of characters to extract

if (yourString[maxLength] !== " ") {

//trim the string to the maximum length
var trimmedString = yourString.substr(0, maxLength);

alert(trimmedString)

//re-trim if we are in the middle of a word
trimmedString = trimmedString.substr(0, Math.min(trimmedString.length, trimmedString.lastIndexOf(" ")))
}

else {
  var trimmedString = yourString.substr(0, maxLength);
}

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