कैसे जावास्क्रिप्ट में एन चार्ट के लिए एक स्ट्रिंग ट्रिम करने के लिए?


169

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

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

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

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


1
"यह" = 7 वर्ण है, क्या आपने इसका इरादा किया है?
अजीज पंजाबी १

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

जवाबों:


346

क्यों नहीं बस सबस्ट्रिंग का उपयोग करें ... string.substring(0, 7);पहला तर्क (0) शुरुआती बिंदु है। दूसरा तर्क (7) समाप्ति बिंदु (अनन्य) है। अधिक जानकारी यहाँ।

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

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

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

5
कृपया ध्यान दें कि string.substr (start, length) अजीब व्यवहार करता है, अगर स्ट्रिंग की लंबाई से अधिक है तो यह खाली लौट आएगी। string.substring (start, end) उम्मीद के मुताबिक काम करता है, यानी अगर यह दिए गए सिरे के लिए पर्याप्त वर्ण नहीं हैं तो यह स्ट्रिंग को वापस लौटा देगा!
14

1
का उपयोग करें string.substr। पिछली टिप्पणी के बावजूद इसका कोई अजीब व्यवहार नहीं है
गिब्लेट

.substring(from, to)सूचकांक लेता है । .substr (लंबाई, से) नहीं करता है, इसके अलावा .substr () के लिए इस्तेमाल किया जब पहला तर्क नकारात्मक है IE में कोई विसंगति है।
बॉब स्टीन

47

एक जवाब में विल की टिप्पणी की नकल करना , क्योंकि मुझे यह उपयोगी लगा:

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

धन्यवाद होगा।

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


1
किसी string.substring(0, length)अन्य मामले में उपयोग करने का कोई मतलब नहीं है, क्योंकि स्ट्रिंग को उस बिंदु पर <= 20 चार्ट होने की गारंटी है, बस उपयोग करें string
निक स्वीटिंग

15

मेरा सुझाव है कि कोड नीटनेस के लिए एक एक्सटेंशन का उपयोग करें। ध्यान दें कि आंतरिक ऑब्जेक्ट प्रोटोटाइप का विस्तार करना उन पुस्तकालयों के साथ संभावित रूप से गड़बड़ कर सकता है जो उन पर निर्भर करते हैं।

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

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

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

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

1
मैं क्या जरूरत है
नैनारी


2

थोड़ी देर ... मुझे जवाब देना था। यह सबसे सरल तरीका है।

// JavaScript
function fixedSize_JS(value, size) {
  return value.padEnd(size).substring(0, size);
}

// JavaScript (Alt)
var fixedSize_JSAlt = function(value, size) {
  return value.padEnd(size).substring(0, size);
}

// Prototype (preferred)
String.prototype.fixedSize = function(size) {
  return this.padEnd(size).substring(0, size);
}

// Overloaded Prototype
function fixedSize(value, size) {
  return value.fixedSize(size);
}

// usage
console.log('Old school JS -> "' + fixedSize_JS('test (30 characters)', 30) + '"');
console.log('Semi-Old school JS -> "' + fixedSize_JSAlt('test (10 characters)', 10) + '"');
console.log('Prototypes (Preferred) -> "' + 'test (25 characters)'.fixedSize(25) + '"');
console.log('Overloaded Prototype (Legacy support) -> "' + fixedSize('test (15 characters)', 15) + '"');

क्रमशः। .padEnd - स्ट्रिंग की लंबाई का अनुमान लगाता है

"पैडएंड () विधि दी गई स्ट्रिंग के साथ वर्तमान स्ट्रिंग को पैड करती है (दोहराया, यदि आवश्यक हो) ताकि परिणामस्वरूप स्ट्रिंग को दी गई लंबाई हो। पेडिंग वर्तमान स्ट्रिंग के अंत (दाएं) से लागू होती है। इस इंटरैक्टिव के लिए स्रोत। उदाहरण एक GitHub रिपॉजिटरी में संग्रहीत है। " स्रोत: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

.substring - आपकी आवश्यकता की लंबाई तक सीमित है

यदि आप एलिप्स जोड़ना चाहते हैं, तो उन्हें आउटपुट में जोड़ें।

मैंने सामान्य जावास्क्रिप्ट usages के 4 उदाहरण दिए। मैं विरासत समर्थन के लिए अधिभार के साथ स्ट्रिंग प्रोटोटाइप का उपयोग करने की अत्यधिक सलाह देता हूं। बाद में इसे लागू करना और बदलना बहुत आसान हो जाता है।


हैलो! अपने कोड के साथ क्या हो रहा है, इस पर कुछ स्पष्टीकरण शामिल करना अच्छा है। यह देखते हुए कि आपका समाधान स्वीकार किए गए उत्तर के समान है, शायद padEndयह क्या है पर थोड़ा विस्तार से ।
मैटी

मेरा समाधान, बहुत अधिक स्वच्छ और अधिक मानकीकृत है और यह कई उपयोग दिखाता है। पैडएंड () विधि किसी दिए गए स्ट्रिंग के साथ वर्तमान स्ट्रिंग को पैड करती है (दोहराया, यदि आवश्यक हो) ताकि परिणामस्वरूप स्ट्रिंग किसी दिए गए लंबाई तक पहुंच जाए। पेडिंग को वर्तमान स्ट्रिंग के अंत (दाएं) से लगाया जाता है। इस इंटरैक्टिव उदाहरण के लिए स्रोत एक GitHub रिपॉजिटरी में संग्रहीत किया जाता है। स्रोत: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
मैथ्यू एगन

1
मैं आपके उत्तर की गुणवत्ता पर विवाद नहीं कर रहा हूं। बस इसे बेहतर कैसे बनाया जाए, इस पर एक सुझाव। आपकी व्याख्या बहुत अच्छी है - अपने उत्तर को संपादित करें और इसे वहां डालें!
मैटी

हाय मैट, मुझे आपका जवाब पसंद है। यह अफ़सोस की बात है कि आप थोड़ा अलग सवाल का जवाब दे रहे हैं। उन्होंने मूल रूप से एक स्ट्रिंग को ट्रिम करने के बारे में पूछा, न कि एक निश्चित स्ट्रिंग की लंबाई।
जैकब क्रिज

0
    let trimString = function (string, length) {
      return string.length > length ? 
             string.substring(0, length) + '...' :
             string;
    };

उदाहरण,

let string = 'How to trim a string to N chars in Javascript';

trimString(string, 20);

//How to trim a string...

-1

मुझे लगता है कि आपको इस कोड का उपयोग करना चाहिए :-)

    // sample string
            const param= "Hi you know anybody like pizaa";

         // You can change limit parameter(up to you)
         const checkTitle = (str, limit = 17) => {
      var newTitle = [];
      if (param.length >= limit) {
        param.split(" ").reduce((acc, cur) => {
          if (acc + cur.length <= limit) {
            newTitle.push(cur);
          }
          return acc + cur.length;
        }, 0);
        return `${newTitle.join(" ")} ...`;
      }
      return param;
    };
    console.log(checkTitle(str));

// result : Hi you know anybody ...

1
मैं उत्सुक हूं कि आपने यह उत्तर क्यों जोड़ा। प्रश्न में पहले से ही एक स्वीकृत उत्तर और कई अन्य उचित उत्तर हैं, जो सभी इस से सरल हैं। या क्या आपका ":-)" यह एक मजाक बनाने का इरादा था?
स्कॉट सॉयट

ध्यान दें कि स्वीकृत उत्तर भी उच्चतम श्रेणी का उत्तर है। मुझे लगता है कि आप यहां एक अलग समस्या को हल करने की कोशिश कर रहे हैं। (और मैंने यह नहीं देखा था कि पहले टिप्पणी करते समय।) ऐसा नहीं है कि यह एक अप्रत्याशित समस्या है, लेकिन अंत में यह केवल पूछे गए प्रश्न से थोड़ा संबंधित है। तुम्हारा भी अजीब प्रभाव है कि दिए गए इनपुट के साथ, आपका आउटपुट स्ट्रिंग 23वर्ण लंबा है, 17डिफ़ॉल्ट पैरामीटर प्लस से अधिक लंबा है4 है और प्रत्यय में वर्ण हैं " ..."। यह अजीब लगता है।
स्कॉट सॉयट

मुझे भी लगता है कि यह एक सरल कार्यान्वयन का उपयोग कर सकता है
स्कॉट सॉयट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.