2012-05-22 42 views
6

Có hàm nào trong javascript so sánh một chuỗi và trả về một boolean không? Tôi tìm thấy .match nhưng nó trả về các chuỗi phù hợp. Tôi đã hy vọng có cái gì đó khác để tôi sẽ có một mã ít hơn trong so sánh một chuỗi. Vì tôi muốn kiểm tra xem một chuỗi có từ này và tiến hành không.chuỗi so sánh trong javascript trả về một boolean

nhờ

+0

Bạn đang tìm kiếm một chuỗi1 chính xác để chuỗi2 trận đấu, hoặc là chuỗi1 cái gì đó có thể xảy ra ở đâu đó trong vòng một string2 lớn hơn? –

+0

đó là giải pháp đầu tiên của tôi nhưng tôi gặp phải một lỗ hổng.Email == Email người bạn sẽ trả về false. vì vậy tôi đã tìm kiếm một chức năng như strcmp cho javascript. :) – magicianiam

Trả lời

11

Bạn có thể sử dụng loại augmentation, đặc biệt là nếu bạn cần phải sử dụng chức năng này thường:

String.prototype.isMatch = function(s){ 
    return this.match(s)!==null 
} 

Vì vậy, bạn có thể sử dụng:

var myBool = "ali".isMatch("Ali"); 

nhìn chung là sử dụng các loại tăng thêm được nản chỉ vì thực tế là nó có thể va chạm với augmentations khác.

Theo Javascript Patterns sách, việc sử dụng sách phải bị giới hạn.

Cá nhân tôi nghĩ rằng đó là OK, miễn là bạn sử dụng một cách đặt tên tốt như:

String.prototype.mycompany_isMatch = function(s){ 
    return this.match(s)!==null 
} 

Điều này sẽ làm cho nó xấu xí nhưng an toàn.

+0

Tuyệt vời! (một chút quá mức cần thiết? D) – ArtoAle

+0

tôi đã không nhìn thấy những điều trước đây. ismatch là gì? để tôi thử cái này cảm ơn – magicianiam

+0

@magicianTôi sẽ làm việc nếu bạn thêm nó vào nguyên mẫu chuỗi - như tôi đã vạch ra. 'isMatch' là sự bổ sung của chúng ta vào khung JavaScript, không phải là hàm nội tại – Aliostad

5

.indexOf() đó sẽ trở lại vị trí của các chuỗi tìm thấy, hoặc -1 nếu không tìm thấy

+0

Tôi đã luôn luôn nghĩ rằng đó là chỉ cho mảng. – magicianiam

+0

không, nó cũng hoạt động trên dây! Nhưng tôi có một chút không rõ ràng về việc liệu bạn đang tìm chuỗi con trong chuỗi, hay so sánh chuỗi chính xác (trường hợp không thích hợp?) .. –

+0

phân biệt chữ hoa chữ thường, nhưng tôi đang định dùng tolowercase để giải quyết vấn đề của mình. để tôi thử cái này cảm ơn. tự hỏi tại sao google không cho tôi xem cái này – magicianiam

0

Bạn chỉ có thể sử dụng một so sánh.

if ("dog" == "cat") { 
    DoSomethingIfItIsTrue(); 
} else { 
    DoSomethingIfItIsFalse(); 
} 
+0

Nói đúng, nếu bạn sử dụng phương pháp này, bạn muốn sử dụng '===', không phải '=='. Tôi nghi ngờ rằng hầu hết các lập trình viên Javascript sẽ sử dụng điều này thay vì tăng thêm nguyên mẫu String, do đó, nó có giá trị ít nhất là nhận được mọi người trong thói quen sử dụng '===' để kiểm tra bình đẳng. –

0

Tôi biết đây không phải là câu trả lời chính xác mà bạn đang tìm kiếm nhưng đây luôn là cách hiệu quả để thực hiện việc này.

if(var1 == var2){ 
    //do this 
}else{ 
    //do that 
}; 
+0

theo số lượng lớn các bài báo (và ý kiến ​​cá nhân của tôi nữa) thử nghiệm '===' là đáng tin cậy hơn nhiều (và có độ thích hợp transitivity) hơn '==' (không phải là chuyển tiếp). Hơn nữa, nếu anh ta cần một boolean anh ta chỉ có thể sử dụng '(var1 === var2? True: false)' – ArtoAle

+0

Có. Tôi hiểu anh ta muốn trả lại một boolean nhưng anh ta sẽ làm gì với nó sau, giả định của tôi sẽ là làm điều gì đó nếu nó là đúng và cái gì khác nếu nó là sai. Nhưng có, bạn là chính xác với ===. –

1
myString.indexOf(myWord) > -1 

hoặc, nếu bạn muốn có một chức năng:

function hasWord(myString, myWord) { 
    return myString.indexOf(myWord) > -1; 
} 
9

Bạn có thể sử dụng RegEx test() phương pháp mà trả về một boolean:

/a/.test('abcd'); // returns true. 
+1

Đây là câu trả lời đúng. "Phương thức' test() 'thực thi tìm kiếm một kết hợp giữa biểu thức chính quy và một chuỗi được chỉ định. Trả về' true' hoặc 'false'." - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test –

0

Trên thực tế, .match() có thể làm các trick cho bạn vì nó sẽ trả về một mảng các mô hình phù hợp với chuỗi nếu có, null khác.

Dù sao, nếu bạn chỉ muốn kiểm tra xem chuỗi có chứa một chuỗi khác bạn có nhiều khả năng sử dụng indexOf() (nó sẽ trả về -1 nếu không tìm thấy chuỗi con nào).

Giải pháp đầu tiên là quá mức cần thiết cho mục đích của bạn.

Nếu ở đầu bên kia bạn muốn kiểm tra sự bình đẳng, bạn có thể sử dụng `chuỗi1 === string2``

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