मुझे आश्चर्य है कि इस तरह की एक साधारण समस्या के लिए बहुत सारे जवाब हैं जिन्हें पढ़ना मुश्किल है और कुछ, जिनमें चुने हुए एक भी शामिल हैं, काम नहीं करते हैं।
मैं आमतौर पर परिणाम स्ट्रिंग को अधिकांश maxLen
वर्णों पर रखना चाहता हूं । मैं URL में स्लग को छोटा करने के लिए इसी फ़ंक्शन का उपयोग करता हूं।
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"
" too many spaces ".trim()