2012-04-04 24 views

Trả lời

5
var string = '[United States][Canada][India]'; 
var search = 'Canada'; 
if (string.indexOf('[' + search + ']') !== -1) { 
    // Whatever 
} 
+0

Đây là cách thực hiện đúng, ngoại trừ việc bạn nên kiểm tra xem 'i ndexOf' không trả về '-1', nếu không thì kiểm tra của bạn sẽ thất bại cho mục đầu tiên trong danh sách vì nó sẽ trả về' 0'. –

+0

@Matt Cảm ơn bạn hoàn toàn chính xác. Tôi thực sự muốn đặt '> -1' và bị phân tâm và thậm chí không nhận ra sai lầm của mình. – qw3n

3

Chỉ cần mở rộng các phương pháp Chuỗi ... như một phần thưởng tôi thêm một trận đấu case-insensitive

// Only line you really need 
String.prototype.has = function(text) { return this.toLowerCase().indexOf("[" + text.toLowerCase() + "]") != -1; }; 

// As per your example 
var Countries = " [United States] [Canada] [India] "; 

// Check Spain 
if (Countries.has("Spain")) { 
    alert("We got Paella!"); 
} 
// Check Canada 
if (Countries.has("Canada")) { 
    alert("We got canadian girls!"); 
} 
// Check Malformed Canada 
if (Countries.has("cAnAdA")) { 
    alert("We got insensitive cAnAdiAn girls!"); 
} 
// This Check should be false, as it only matches part of a country 
if (Countries.has("Ana")) { 
    alert("We got Ana, bad, bad!"); 
} 

Demo:http://jsfiddle.net/xNGQU/2/

+1

NICE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! –

Các vấn đề liên quan