2012-10-30 11 views
11

मैं स्ट्रिंग के पहले 5 शब्दों को एक पठनीय प्रारूप में वापस करने की कोशिश नहीं कर रहा हूं, कोई शब्द या अल्पविराम शब्दों को अलग नहीं कर रहा हूं। मुझे यकीन नहीं है कि यह एक रेगेक्स चीज है या क्या, लेकिन मैं इसे समझ नहीं सकता हालांकि यह संभवतः सरल है। धन्यवाद!jQuery बिना किसी स्ट्रिंग के पहले 5 शब्द कमांड

function getWords(string){ 
    var words = string.split(/\s+/).slice(1,5); 
    return words; 
} 

उत्तर

26

केवल एक चीज आप याद कर रहे हैं एक join()

इस प्रयास करें:: http://jsfiddle.net/ccnokes/GktTd/

इस समारोह मैं उपयोग कर रहा हूँ है:

क्या मैं अब तक है देखें

function getWords(str) { 
    return str.split(/\s+/).slice(0,5).join(" "); 
} 

यह कुछ समय करेगा हिंग की तरह:

var str = "This is a long string with more than 5 words."; 
console.log(getWords(str)); // << outputs "This is a long string" 

.join() की एक अधिक विवरण के लिए this link पर एक नजर डालें। जावास्क्रिप्ट में कार्य करें। अनिवार्य रूप से - यदि आप कोई तर्क नहीं देते हैं, तो यह डिफ़ॉल्ट डिलीमीटर , का उपयोग करता है, जबकि यदि आप एक की आपूर्ति करते हैं (जैसा कि मैं उपर्युक्त उदाहरण में कर रहा हूं, " " प्रदान करके - इसका उपयोग इसके बजाय होगा। यही कारण है कि आउटपुट बन जाता है पहले 5 शब्द, प्रत्येक के बीच एक रिक्ति द्वारा अलग

+3

धन्यवाद ट्रॉय, यह कोई समस्या नहीं है। – ccnokes

+4

मुझे .slice (0,5) का उपयोग करना पड़ा था या यह पहले शब्द को कटा हुआ था। –

0

उन अल्पविराम के कैसे आप आउटपुट डेटा से आ रहे हैं:।

//write to DOM 
$('<h2 />').text(getWords(str).join(' ')).appendTo('body'); 

आप getWords(str) के लिए एक स्ट्रिंग को जोड़ते हैं, जावास्क्रिप्ट सरणी में कनवर्ट करने की कोशिश करता है एक स्ट्रिंग में - यह कॉमा के साथ शब्दों में शामिल होने से करता है। अगर आप उन्हें किसी और चीज़ से शामिल करना चाहते हैं, तो join का उपयोग करें।

0

ट्रॉय अलफोर्ड समाधान काम कर रहा है, लेकिन इसमें एक कमी है।

परिवर्तित हो जाएगा 'jQuery एक
बहु ब्राउज़र है': शब्दों के बीच अगर कोई एक से अधिक स्थान, या नई लाइन चरित्र (\ N) यह एक अंतरिक्ष में परिवर्तित हो जाएगा, जैसे हो जाएगा

को

इस समस्या को हल करने के लिए 'jQuery एक बहु ब्राउज़र है', हम शब्द सीमा regex का उपयोग हो सकता है। ऐसा लगता है:

function getFirstWords(text, wordsAmount) { 
    const arr = text.split(/\b/g); 
    const arrItemsAmount = (/\b/.exec(text) && /\b/.exec(text).index) ? 
          wordsAmount * 2 : 
          wordsAmount * 2 - 1; 
    return arr.slice(0, arrItemsAmount).join(''); 
} 
संबंधित मुद्दे