2011-07-03 23 views

cevap

18

Kullanım 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', karakter bulunamadığı zaman -1 değerini döndürür, 0 değil – jwodder

+0

Karşılıksız 0 ile karşılaştırmalısınız; İlk karakterin bir periyot olduğu yerde, indexOf() 0 değerini döndürür. – kwah

+0

Haha, strpos() ve kodlama indexOf() :) düşünürken gerçekleşen şeydir. – AlienWebguy

1

"myfile.doc" = TRUE 

vs. someString.indexOf('.') != -1:

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

sadece indexOf yöntemin dönüş değeri test edin. Bir regex gerek yok.

+0

gerçek enough..gets benim 1 – james

0

DizinOf kullanın. Bir alt dizenin konumunu gösteren bir tamsayı veya bulunamazsa -1 değerini döndürür.

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

' if (test.indexOf ('.')) ', 'indexOf' testinin test edilmesi gerektiği gibi değil, 0' ı döndürüp döndürmediğini test eder, bu nedenle kodunuz bir dizgeye sahip bir dizgeyi sanki bir tane ile başlayan bir dizgeyi ve bir eksik olan dönem. – jwodder

+0

Haklısınız. Bunu göndermeden önce test etmeliydim. – ratsbane

1

Hemen zaten söylenmiştir ne eklemek: Örneğin:

bu iyi olup olmadığı konusunda farklı görüşler vardır fikir, ancak

örneklerini contains yöntemiyle genişletebilirsiniz.
String.prototype.contains = function(char) { 
    return this.indexOf(char) !== -1; 
}; 

Bir yöntemin yapacağı şey (göreceli olarak) belirsiz olduğunda, bu tür şeyleri sevme eğilimindeyim.

0

Bu burada eski bir soru ama biliyorum (eski tarayıcılarda desteklenmez) bunu yapmak için yeni bir yoludur:

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

docs

İlgili konular