दिलचस्प पोस्ट
MySQL में gener_series () समकक्ष एक asp.net MVC नियंत्रक एक छवि वापस कर सकते हैं? जावा में प्राथमिकताओं, हमेशा प्राथमिकता सहित स्थानीय चर क्यों होना चाहिए? WPF CreateBitmapSourceFromHBitmap () मेमोरी रिसाव Android में HTTP प्रमाणीकरण कैसे करें? एकाधिक सफेद स्थान निकालें कैसे एक प्रतिबद्ध में सभी फाइलों की सूची है? फोरट्रान: पूर्णांक * 4 बनाम पूर्णांक (4) बनाम पूर्णांक (प्रकार = 4) कैसे एंड्रॉइड में अलग-अलग लोकेशनों से स्ट्रिंग पाने के लिए? नेस्टेड वादों को हटा रहा है JUnit4 में विशिष्ट क्रम में परीक्षा के तरीकों को कैसे चलाने के लिए? एंड्रॉइड लंबित इंस्टेंट क्या है? फ्लेक्सबॉक्स में समान ऊंचाई कॉलम को अक्षम कैसे करें? एक अर्रे डुप्लिकेट करने के लिए जावास्क्रिप्ट सबसे तेज़ तरीका – स्लाइस बनाम लूप के लिए निर्धारित करें कि डिवाइस स्मार्टफोन या टैबलेट है?

जावास्क्रिप्ट के साथ लंबी तार को छोटा करने का स्मार्ट तरीका

क्या किसी के पास जावास्क्रिप्ट के साथ स्ट्रिंग्स को छोटा करने के लिए एक अधिक परिष्कृत समाधान / लाइब्रेरी है, जो स्पष्ट है:

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

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट के साथ लंबी तार को छोटा करने का स्मार्ट तरीका"

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

अब आप यह कर सकते हैं:

 var s = 'not very long'; s.trunc(25); //=> not very long s.trunc(5); //=> not ... 

यदि 'अधिक परिष्कृत' से, आप का मतलब है कि स्ट्रिंग की अंतिम शब्द सीमा पर छंटनी, तो यह हो सकता है कि आप क्या चाहते हैं:

 String.prototype.trunc = function( n, useWordBoundary ){ if (this.length <= n) { return this; } var subString = this.substr(0, n-1); return (useWordBoundary ? subString.substr(0, subString.lastIndexOf(' ')) : subString) + "&hellip"; }; 

अब आप यह कर सकते हैं:

 s.trunc(11,true) //=>not very... 

यदि आप देशी वस्तुओं का विस्तार नहीं करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:

 function truncate( n, useWordBoundary ){ if (this.length <= n) { return this; } var subString = this.substr(0, n-1); return (useWordBoundary ? subString.substr(0, subString.lastIndexOf(' ')) : subString) + "&hellip"; }; // usage truncate.apply(s, [11, true]); //=>not very... 

ध्यान दें कि यह केवल फ़ायरफ़ॉक्स के लिए किया जाना चाहिए

अन्य सभी ब्राउज़र एक सीएसएस समाधान का समर्थन करते हैं ( सहायता तालिका देखें):

 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 */ } 

विडंबना मुझे मोज़िला एमडीसी से कोड स्निपेट मिला है।

यहां मेरा समाधान है, जिसमें अन्य सुझावों में कुछ सुधार हैं:

 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 वर्णों से अधिक है

या तो रद्दी का तंग का प्रयोग करें

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

या अंडरस्कोर । स्ट्रींग का छोटा हिस्सा

 _('Hello world').truncate(5); => 'Hello...' 

अधिकांश आधुनिक जावास्क्रिप्ट फ़्रेमवर्क ( JQuery , प्रोटोटाइप , इत्यादि …) में एक उपयोगिता फ़ंक्शन है जो स्ट्रिंग पर हमला करता है जो इसे संभालता है।

यहां प्रोटोटाइप में एक उदाहरण है:

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

ऐसा लगता है कि उन कार्यों में से कोई एक ऐसा है जिसे आप चाहते हैं कि किसी और के साथ सौदा / रखरखाव करें। मैं इसे और अधिक कोड लिखने के बजाय ढांचे को संभालता हूं।

वैध कारण हैं क्योंकि लोग जावास्क्रिप्ट के बजाय सीएसएस के बजाय ऐसा कर सकते हैं।

जावास्क्रिप्ट में 8 वर्णों को छोटा करने के लिए:

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

शायद मुझे इस बात का एक उदाहरण याद है कि कोई नल का प्रबंधन कर रहा है, लेकिन 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 ""; } } 

सभी आधुनिक ब्राउज़रों अब एक सरल सीएसएस समाधान का समर्थन करते हैं, यदि किसी पाठ की रेखा उपलब्ध चौड़ाई से अधिक है तो स्वचालित रूप से एलीपसिस जोड़ना है:

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

(ध्यान दें कि इसके लिए तत्व की चौड़ाई को किसी भी प्रभाव के लिए किसी तरह सीमित किया जाना चाहिए।)

https://css-tricks.com/snippets/css/truncate-string-with-ellipsis/ पर आधारित

यह ध्यान दिया जाना चाहिए कि यह दृष्टिकोण वर्णों की संख्या के आधार पर सीमित नहीं होता है। यदि आपको पाठ की एक से अधिक पंक्तियों को अनुमति देने की आवश्यकता है तो यह भी काम नहीं करता है

यदि आप Ext.js. का उपयोग कर रहे हैं तो आप Ext.util.Format.ellipsis फ़ंक्शन का उपयोग कर सकते हैं।

मैंने Kooilnc के समाधान upvoted वास्तव में अच्छा कॉम्पैक्ट समाधान एक छोटे से किनारे का मामला है जो मुझे पता होना चाहिए। अगर कोई भी किसी भी कारण के लिए वास्तव में लंबे चरित्र अनुक्रम में प्रवेश करता है, तो यह छोटा नहीं होगा:

 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; } 

एक त्वरित 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 

c_harm का जवाब मेरी राय में सबसे अच्छा है कृपया ध्यान दें कि यदि आप उपयोग करना चाहते हैं

 "My string".truncate(n) 

आपको एक शाब्दिक बजाय एक regexp वस्तु निर्माता का उपयोग करना होगा इसके अलावा आपको इसे परिवर्तित करते समय \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;'; }; 

निम्नलिखित कोड का उपयोग करें

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

Kooilnc के समाधान को ठीक करना:

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

स्ट्रिंग ऑब्जेक्ट के बजाय स्ट्रिंग वैल्यू देता है अगर इसे छोटा करना आवश्यक नहीं है

मुझे हाल ही में यह करना था और इसके साथ समाप्त हुआ था:

 /** * 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) + '...'; } 

मुझे अच्छा और साफ लगता है 🙂

यह फ़ंक्शंस truncate अंतरिक्ष और शब्दों भागों भी करते हैं। (Ex: मॉथ में माँ …)

 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 …