2011-09-18 5 views
83

कैसे जावास्क्रिप्ट का उपयोग कर एक फ़ंक्शन बना सकता है जो एक निर्दिष्ट लंबाई तक तर्क के रूप में पारित स्ट्रिंग को ट्रिम करेगा, तर्क के रूप में भी पारित किया जाएगा। उदाहरण के लिए:जावास्क्रिप्ट एक स्ट्रिंग को लंबाई

var string = "this is a string"; 
var length = 6; 
var trimmedString = trimFunction(length, string); 

/* trimmedString should be: 
    "this is" */ 

किसी को भी विचार मिल गया है? मैंने सबस्ट्रिंग का उपयोग करने के बारे में कुछ सुना है, लेकिन काफी समझ में नहीं आया।

+0

"यह है" = 7 वर्ण, क्या आप इसका इरादा रखते थे? –

+0

जैसा कि सवाल में कहा गया है, मुझे यह भी सुनिश्चित नहीं है कि ऐसा करने के लिए सबस्ट्रिंग का उपयोग कैसे करें। क्या आप कृपया मुझे एक उदाहरण दे सकते हैं? मैं स्वीकार करता हूं कि पाठ्यक्रम का जवाब है, अगर यह काम करता है;) @Interstellar_Coder ओह, टाइपो! –

उत्तर

192

क्यों न केवल substring का उपयोग करें ... string.substring(0, 7); पहला तर्क (0) प्रारंभ बिंदु है। दूसरा तर्क (7) अंत बिंदु (अनन्य) है। More info here.

var string = "this is a string"; 
var length = 7; 
var trimmedString = string.substring(0, length); 
+0

धन्यवाद! अच्छी तरह से काम। जैसे ही समय सीमा पारित हो जाती है, मैं इसे उत्तर के रूप में चिह्नित कर दूंगा! –

+13

और यदि आप अधिकतम लंबाई से अधिक तारों के लिए लंबवत चाहते हैं (शायद अधिकतम अधिकतम के लिए अधिक सहायक): var string = "यह एक स्ट्रिंग है"; var लंबाई = 20; var trimmedString = string.length> लंबाई? string.substring (0, लंबाई - 3) + "...": string.substring (0, लंबाई); – Will

+2

कृपया ध्यान दें कि string.substr (प्रारंभ, लंबाई) अजीब व्यवहार करता है, यदि लंबाई स्ट्रिंग की लंबाई से अधिक है तो यह खाली हो जाएगी। string.substring (प्रारंभ, अंत) अपेक्षा के अनुसार काम करता है, यानी अगर अंतराल के लिए पर्याप्त वर्ण नहीं हैं तो यह स्ट्रिंग को इसके अंत तक वापस कर देगा! – centic

21

प्रतिलिपि बनाई जा रही एक जवाब में Will's टिप्पणी है, क्योंकि मैं इसे उपयोगी पाया:

var string = "this is a string"; 
var length = 20; 
var trimmedString = string.length > length ? 
        string.substring(0, length - 3) + "..." : 
        string; 

धन्यवाद विल।

और किसी के लिए भी एक jsfiddle कौन परवाह करता है https://jsfiddle.net/t354gw7e/ :)

+0

किसी भी मामले में 'string.substring (0, लंबाई) 'का उपयोग करने में कोई बिंदु नहीं है, क्योंकि स्ट्रिंग को उस बिंदु पर <= 20 वर्ण होने की गारंटी है, बस' स्ट्रिंग 'का उपयोग करें । –

+0

चीयर्स, उत्तर –

6

एक विस्तार का प्रयोग क्यों नहीं?

String.prototype.trim = function (length) { 
    return this.length > length ? this.substring(0, length) + "..." : this; 
} 

और यह पसंद का उपयोग करें:

var stringObject= 'this is a verrrryyyyyyyyyyyyyyyyyyyyyyyyyyyyylllooooooooooooonggggggggggggsssssssssssssttttttttttrrrrrrrrriiiiiiiiiiinnnnnnnnnnnnggggggggg'; 
stringObject.trim(25) 

Caution:

हम एक मानक वस्तु .trim() के प्रोटोटाइप को अधिलेखित कर रहे हैं क्योंकि। इससे अन्य पुस्तकालयों और उपकरणों में अप्रत्याशित व्यवहार हो सकता है जिनका आप उपयोग कर सकते हैं।

+1

अद्यतन किया है क्यों नहीं? क्योंकि आप मानक ऑब्जेक्ट '.trim() 'के प्रोटोटाइप को ओवरराइट कर रहे हैं। इससे अन्य पुस्तकालयों और उपकरणों में अप्रत्याशित व्यवहार हो सकता है जिनका आप उपयोग कर सकते हैं। –

+0

@ ओलेगबर्मन निश्चित, आपकी टिप्पणी पर ध्यान दिया। – xameeramir