日期:2014-05-16  浏览次数:20307 次

javascript代码输出结果让人很迷惑!!
javascript代码输出结果让人很迷惑!!代码如下:

JScript code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 创建脚本块 </TITLE>
</HEAD>

<BODY>
<script language="JavaScript">
<!--
var myVariable = "Hello there";
var therePlace = myVariable.search("there");
document.write(therePlace);
//-->
</script>

</BODY>
</HTML>



输出结果应该是therePlace,为什么会是6呢?而我把search("there")改成search("this"),结果怎么会是-1呢?

------解决方案--------------------
search是查找子字符在字符串中的位置,当然返回的是那个结果了啊。
------解决方案--------------------
查找字符串或出现的位置,一般用indexOf,search()还是用得少
<script type="text/javascript">

var str="Visit W3School!"
document.write(str.search(/W3School/))

</script>
------解决方案--------------------
你没看清世界,却说世界欺骗了你。。 ---泰戈尔
------解决方案--------------------
search在一个字串对象(string object)中查找关键词字串(规范表达式,regular expression),若匹配(即在目标字串中成功找到关键词)则返回关键词在目标字串中第一次出现的位置序列,反之,如果不匹配,就返回-1。以下示例在目标字串“HELLO WORLD!”中查找字母“L”,返回值为2,因为字母“L”第一次出现时其常规序列排在第三位,而JS从0开始起算,字母“H”序列为0,字母“E”为1,字母“L”当然就是2了:

MyStr="HELLO WORLD!";
re="L";
showstr=MyStr.search(re);
alert(showstr);

我们看得出来,search方法只关心有无匹配,一旦找到匹配,就提供返回值,并且立刻中断查找的执行。上例中的目标字串(MyStr)有三个字母“L”,后两个search并不关心,因为条件已经满足,它退出了自身的匹配查找工作。据此原理,当我们只需要验证有无匹配的操作时,用search既简单又高效。以下再给出一个示例,这是一个自定义函数,它使用search方法简捷地完成字符匹配检测操作,若有匹配则将目标字串完整提取出来:

function key_search(re, str){
echo = (str.search(re)!=-1 ? str : "无匹配");
return(echo);
}
------解决方案--------------------
这个 search 方法类似于 java 中字符串的 indexOf(),如果找到了指定字符串,返回对应的下标(从0开始),如果没有找到,则返回 -1