আমি একপ্রকার অবাক হই যে এর মতো সরল সমস্যার জন্য এমন অনেক উত্তর রয়েছে যা পড়া কঠিন এবং বেছে নেওয়া নির্বাচিত সহ কয়েকটি কাজ করে না।
আমি সাধারণত চাইছি ফলাফলের স্ট্রিং সর্বাধিক maxLen
অক্ষরে থাকুক । আমি এই একই ফাংশনটি ইউআরএলগুলির স্লাগগুলি সংক্ষিপ্ত করতেও ব্যবহার করি।
str.lastIndexOf(searchValue[, fromIndex])
একটি দ্বিতীয় প্যারামিটার নেয় যা সূচকটি যাতে স্ট্রিংগুলিতে দক্ষ এবং সাধারণ তৈরি করে পিছনে সন্ধান শুরু করতে হয়।
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"
" too many spaces ".trim()