2011-07-03 30 views

Trả lời

18

Sử dụng indexOf()

var str="myfile.doc"; 
var str2="mydirectory"; 

if(str.indexOf('.') !== -1) 
{ 
    // would be true. Period found in file name 
} 

if(str2.indexOf('.') !== -1) 
{ 
    // would be false. No period found in directory name 
} 
+1

'indexOf' trả về -1 khi không tìm thấy ký tự, không phải 0. – jwodder

+0

Bạn nên so sánh với -1 không phải 0; nơi ký tự đầu tiên là một khoảng thời gian, indexOf() sẽ trả về 0. – kwah

+0

Haha đó là những gì sẽ xảy ra khi bạn đang nghĩ đến strpos() và mã hóa indexOf() :) – AlienWebguy

1

Một số regex đơn giản sẽ làm.

if (myString.match(\.)) { 
    doSomething(); 
} 
6

Chỉ cần kiểm tra giá trị trả lại của phương thức indexOf: someString.indexOf('.') != -1. Không cần regex.

+0

enough..gets thật của tôi 1 – james

0

Sử dụng chỉ mụcOf. Nó trả về một số nguyên cho biết vị trí của một chuỗi con, hoặc -1 nếu nó không được tìm thấy.

Ví dụ:

var test="myfile.doc" 
if (test.indexOf('.')) {alert("Period found!";} 
else {alert("Period not found. Sorry!";} 
+4

' if (test.indexOf ('.')) 'kiểm tra xem' indexOf' trả về 0, không -1 vì nó sẽ được kiểm tra, vì vậy mã của bạn sẽ xử lý một chuỗi không có dấu chấm như thể nó có một và một chuỗi bắt đầu bằng một thời gian thiếu một. – jwodder

+0

Bạn nói đúng. Tôi nên thử nghiệm trước khi gửi. – ratsbane

1

Chỉ cần để thêm vào những gì đã được nói:

Có nhiều ý kiến ​​khác nhau về việc có hay không đây là một tốt ý tưởng, nhưng bạn có thể mở rộng tất cả các trường hợp String với phương thức contains nếu bạn muốn:

String.prototype.contains = function(char) { 
    return this.indexOf(char) !== -1; 
}; 

Tôi có xu hướng thích loại điều này, khi nó (tương đối) rõ ràng một phương pháp sẽ làm gì.

0

Tôi biết đây là một câu hỏi cũ, nhưng đây là một cách mới để làm điều đó (không được hỗ trợ trong các trình duyệt cũ):

str.includes('.'); //returns true or false 

docs

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