2014-03-13 17 views
1
text="Sfs gsk fsd exc gsk gks"; 
var myName="gsk"; 
var hits=[]; 
for(var i=0;i<text.length;i++) 
{ 
    if(text[i]=="g"&&text[i+1]=="s"&&text[i+2]=="k") 
    { 
    for(var j=i;j<(i+myName.length);j++) 
    { 
     hits.push(text[j]); 
    } 
    } 
} 
if(hits===0) 
    console.log("your name is not in array"); 
else 
    console.log(hits); 

这里O/P是像:: [ 'g', 's', 'k', 'g', 's', 'k' ]当名字长度大概为100个字符时,为你的名字找到完全匹配的名字?

现在,如果VAR myName长100个字符?

+0

谷歌'RegExp' – Adam

+0

你真的需要有一个适当的缩进。您的代码也很难阅读,因为您没有格式化,例如你应该在操作员身边留下空间。支持代码格式非常重要,请不要忽视它。 – bolov

+0

@bolov:感谢您的建议...我将在未来肯定.. – user3415203

回答

0

如果你需要找到textmyName,这将是一个更好的办法ihmo:

var text = 'sfs,gsk,fsd,exc,gsk,gks'.split(',') 
//  ^create an Array by splitting a string (on the comma) 
    ,myName = 'gsk' 
    ,otherName = 'aVeryLongAndStrangeNameWellItsNotHundredCharsButItsLongStill' 
    ,myNameExists = text.indexOf(myName.toLowerCase()) > -1 // => true 
//          ^check case insensitive 
    ,otherNameExists = text.indexOf(otherName.toLowerCase()) > -1// => false 

// display: 
console.log(myNameExists ? myName : 'myName not in text'); 
console.log(otherNameExists ? otherName : 'otherName not in text'); 

indexOf方法的参数存在在阵列检查(如myName),它有一个匹配项,它返回数组元素的索引。匹配时索引大于-1。

如果 '精确' 你的意思是大小写敏感的,除去.toLowerCase()

的阵列

+1

即时通讯相当新的JS可以请详细说明你说什么?Thanx回复 – user3415203

+0

我已经添加了一些解释。但也许你应该首先遵循教程(检查http://www.codecademy.com/tracks/javascript) – KooiInc

+0

如果字符串'otherName'存在于数组'文本'...我如何显示otherName作为输出单独['a','V','e','r','y','L','o'....等等......'t','i','l ','l']。我们必须使用什么条件。 – user3415203

0

也许你可以试试jQuery的.inArray()

像这样的事情

var text=["Sfs", "gsk", "fsd", "exc", "gsk", "gks"]; 
var myName = "gsk"; 
var hits = jQuery.inArray(myName, text); // returns 1 

if(hits >= 0){ // name found } 
else {// name not found } 
MDNindexOf