String对象有许多的方法,因此我们这里的讨论范围只限于其中的两个,indexOf()和 substring()方法。
你已经看到,JavaScript字符串是由字符组成的。这些字符中的每一个都有一个索引。这个索引是从0开始的,所以第一个字符的位置的索引是0,第二个是1,以此类推。方法indexOf()查找并返回子字符串起始的索引位置(lastIndexOf()方法则返回子字符串结束的位置)。举个例子,如果我们想让我们的用户输入e-mail地址,我们能检查在它们的输入中是否包含@符号。(虽然这不能确保邮件地址是合法的,但至少可以在很大程度上确保其有效,稍候我们会在这本书中接触更复杂的数据校验。)
接下来,我们使用prompt()方法获取用户的 e-mail地址,然后检查输入中是否包含@符号,并使用indexOf()返回@符号的索引:
<html>
<body>
<script type="text/javascript">
var userEmail= prompt( "Please enter your email
address ", "" );
document.write( userEmail.indexOf( "@" ) );
</script>
</body>
</html>
如果没有发现@ ,在页面中会输出-1。只要在这个字符出现在输入字符串中的任何位置,就会返回索引中它的位置,换句话说某个大于-1的数。
substring()函数使用子字符串的起始和结束位置的索引作为参数,从另一个字符串中截取一个字符串。我们可以不使用第二个参数来返回从第一个索引到字符串结束的所有字符串。因此要截取从第三个字符(索引2)到第六个字符(索引5)的索引字符,我们这样写:
<html>
<body>
<script type="text/javascript">
var myOldString = "Hello World";
var myNewString = myOldString.substring( 2, 5 );
document.write( myNewString );
</script>
</body>
</html>
你在浏览器中会看到页面中输出了llo。注意substring()方法复制了它返回的子字符串,但它没有改变原来的字符串。
当你处理未知的值时,substring()方法真的会用到它自己。这是另一个例子,它同时使用了indexOf()和substring()方法:
<html>
<body>
<script type="text/javascript">
var characterName = "my name is Simpson, Homer";
var firstNameIndex = characterName.indexOf( "Simpson,
" ) + 9;
var firstName = characterName.substring( firstNameIndex );
document.write( firstName );
</script>
</body>
</html>
我们在变量characterName的字符串中提取Homer,使用indexOf()查找姓的起始位置,然后给它加上9得到名的起始位置的索引(因为“Simpson, ”是9个字符的长度),并把它存储在firstNameIndex中。它会在substring()方法中被使用来提取从名的起始开始的所有字符-我们没有指定最后一个索引,因此这个字符串中的其余字符都会被返回。
本文转自 牛海彬 51CTO博客,原文链接:http://blog.51cto.com/newhappy/76830,如需转载请自行联系原作者