और

2012-12-07 21 views
5

को छोड़कर सभी शब्दों को कम करना, मैं उन सभी अक्षरों को कम करने का सबसे तेज़ तरीका ढूंढ रहा हूं जो एक वाक्यांश में और एक भाग में नहीं हैं। मैं अपने मूल मामले में AND छोड़ना चाहता हूं, चाहे वह and या AND नहीं बदला जाना चाहिए।और

उदाहरण के लिए, barack AND obamaBarack AND Obama के बराबर परीक्षण करना चाहिए, लेकिन barack and obama नहीं। (में मामला अंतर नोटिस और)

यहाँ एक दृष्टिकोण है, लेकिन मुझे आश्चर्य है कि अगर वहाँ एक छोटा रास्ता या बल्कि एक तरीका है कि iterators से बचा जाता है है:

var str = 'Barack AND Obama'; // should be barack AND obama after 
str = str.split(/\s+/g).map(function (s) { 
    return s.toLowerCase() != 'and' ? s.toLowerCase() : s; 
}).join(' '); 

उत्तर

8

आप हर शब्द कि वास्तव में नहीं है लोअरकेस और कर सकते हैं

str = str.replace(/\b(?!AND).+?\b/g, function(s) { 
    return s.toLowerCase(); 
}); 
+0

अच्छा दृष्टिकोण! मुझे सबसे अच्छा –

+0

चुनने से पहले दूसरों में दिलचस्पी है, मुझे नहीं पता था कि 'String.replace' ने एक फ़ंक्शन स्वीकार किया है, अच्छा। –

+0

मैंने देखा है कि यह छद्म रूपरेखा करने के लिए प्रयोग किया जाता है। यह शायद मेरी समस्या का सबसे सुंदर दृष्टिकोण है। –

2

मुझे लगता है कि pimvdb सबसे सुरुचिपूर्ण समाधान है, लेकिन सिर्फ किस्म के लिए, यहाँ एक और एक है: एक नकारात्मक अग्रदर्शी का उपयोग कर।

var str = 'Barack AND Obama'; 
var arr = str.split(' '); 
for(var i=0;i<arr.length;i++){ 
    if (arr[i] != 'AND'){ 
    arr[i] = arr[i].toLowerCase(); 
    } 
} 
var ans = arr.join(" "); 

यह रूप में सुंदर नहीं है, लेकिन मैं अगर, भविष्य में आवश्यकतानुसार यानी शब्दों की सूची है कि लोवरकेस नहीं किया जाना चाहिए करने के लिए जोड़ यह थोड़ा और अधिक पठनीय और आसान संशोधित करने के लिए लगता है।

+0

आप वहां कुछ भी नहीं 'विभाजित' करते हैं, और मुझे लगता है कि आप 'विभाजन' ('') 'करना चाहते थे? –

+0

हां, क्षमा करें, यह मेरे हिस्से पर एक टाइपो था। :) – Scott

संबंधित मुद्दे