2013-04-27 5 views
14

में अल्पविराम के बजाय 'और' का उपयोग करें मैंने अल्पविराम से अलग स्ट्रिंग के साथ सरणी में शामिल होने के बारे में कई प्रश्न और उत्तर जांचे हैं, लेकिन मेरी समस्या यह है कि, मैं स्ट्रिंग को पठनीय बना रहा हूं मानव यानी मेरे पास टैग सरणी है, यदि उनका दो टैग है, तो यह tag1 and tag2 होगा और यदि उनका 100 टैग है तो यह tag1, tag2, ,,,tag99 and tag100 होगा, पिछली बार and का उपयोग करें और अल्पविराम के रूप में अल्पविराम का उपयोग करने से पहले।कॉमा से अलग स्ट्रिंग के लिए ऐरे और अंतिम टैग के लिए jquery

JQuery में संभालने का कोई तरीका?

+0

मैं फ़ंक्शन में शामिल होने का प्रयास किया है, लेकिन उस फ़ंक्शन के साथ समस्या इम्प्रोड – Suleman

उत्तर

50

आप .slice() उपयोग कर सकते हैं:

> var a = [1, 2, 3, 4, 5]; 
> [a.slice(0, -1).join(', '), a.slice(-1)[0]].join(a.length < 2 ? '' : ' and '); 
'1, 2, 3, 4 and 5' 
  • a.slice(0, -1).join(', '): सभी लेकिन पिछले तत्व लेता है और उन्हें एक अल्पविराम के साथ एक साथ जुड़ जाता है।
  • a.slice(-1)[0]: यह अंतिम तत्व है।
  • .join(a.length < 2 ? '' : ' and '): कम से कम दो तत्व होने पर 0 स्ट्रिंग और अंतिम तत्व and के साथ जुड़ता है।
+0

की तरह काम कर रही है, कृपया इसे आजमाएं कृपया – Suleman

+0

पूरी तरह से काम कर रहे हैं, उत्कृष्ट उत्तर wer (वाई) – Suleman

+0

यह पूरी तरह से काम नहीं करता है, बस 1 तत्व की सरणी के साथ प्रयास करें। –

1

इस प्रयास करें:

var substr = new Array("One", "Two", "Three"); 
    var commaList = ''; 

    var i; 
    for (i = 0; i < substr.length; ++i) { 
     if (i == substr.length - 1) 
      commaList += " and " + substr[i]; 
     else 
      commaList += ", " + substr[i]; 
    } 

    console.debug(commaList.substr(2, commaList.length)); 
+1

क्षमा करें, लेकिन यह 'और' कभी नहीं लिखता है ... –

+0

धन्यवाद एंटी। मैंने ऊपर दिए गए कोड को समायोजित किया है। –

10

एक और त्वरित समाधान के साथ पिछले अल्पविराम को बदलने के लिए है और।

निम्नलिखित कोड:

var a = [0,1,2,3,4]; 
a.join(', ').replace(/,(?!.*,)/gmi, ' and'); 

चाल करना चाहिए। (इसके अलावा, अपनी जरूरत के लिए रेगेक्स संशोधक के साथ खेलते हैं)।

एक संभावित समस्या उस समय हो सकती है जब आपके पास बड़ी सरणी हो, लेकिन इसे काम करना चाहिए।

+1

यह स्वीकार्य उत्तर होना चाहिए, क्योंकि यह लंबाई 1 की सूचियों के साथ काम करेगा। केवल गॉचा यह काम नहीं करेगा यदि सूची में कॉमा युक्त स्ट्रिंग हैं, लेकिन इसके लिए वर्कअराउंड प्लेसहोल्डर स्ट्रिंग का उपयोग करना है और फिर उन्हें प्रतिस्थापित करना है यह एक वैध चिंता है। अच्छा उत्तर! –

0
  1. "डीएनए" ("और" पीछे की ओर) के साथ बनाने के लिए अल्पविराम से अलग स्ट्रिंग
  2. उल्टा यह
  3. की पहली आवृत्ति बदलें ","
  4. इसे फिर से रिवर्स
[1, 2, 3] 
    .join(', ') 
    .split('').reverse().join('') 
    .replace(' ,', ' dna ') 
    .split('').reverse().join('') 
संबंधित मुद्दे