ActionScript编程  搜索子字符串的位置
作用:
在字符串内搜索子字符串,并返回其索引位置。
说明:
使用String类的indexOf()或lastIndexOf()方法,可以判断字符串中是否包含有指定的子符串值。这两个方法都会返回到的子字符串的起始索引。
indexOf()方法是从左向右搜索字符串,并返回在调用字符串内指定位置上或之后到的第一个匹配项的起始索引位置。如果未到匹配项,则返回-1。indexOf()方法的一般形式如下所示。
String.indexOf(substring,startIndex);
indexOf()方法包含有以上两个参数,其详细介绍如下所示。
substring  要搜索的子字符串。
startIndex  指定开始搜索子字符串的起始索引位置(从零开始),可选参数。字符串中的第一个字符的索引位置是0,而不是1。如果省略此参数,indexOf()方法会从字符串开头开始搜索(即从索引0处)。
lastIndexOf()方法的运行方式与indexOf()方法类似,只不过是在字符串中从右向左搜索,实质上就是从后面往回搜索字符串,并返回子字符串最后出现的起始索引位置。即使是从后面往回搜索字符串,返回的起始索引仍然是到的子字符串的开头位置。如果未到匹配项,则返回-1。
lastIndexOf()方法的一般形式如下所示。
String.lastIndexOf(substring,startIndex);
与indexOf()方法相同,lastIndexOf()方法也包含有两个参数,其详细介绍如下所示。
substring  要搜索的子字符串。
startIndex  指定搜索子字符串的起始索引位置,默认为允许最大的索引值。如果省略该参数,lastIndexOf()方法会从字符串的末尾开始搜索(即从索引string.length - 1处)。
在使用indexOf()或lastIndexOf()方法搜索子字符串时,substring参数中的字符串文本区分大小写。
示例:
如果想要测试一个字符串是否包含有另一个字符串,可以使用带有一个参数的indexOf()方法。例如,搜索“the”字符串文本在str中首次出现的起始索引位置,如下所示。
var str:String = "I will love you until the seas run dry and the rocks crumble.";
var index:int = str.indexOf("the");
if (index != -1){
trace("\"the\"出现在str内索引值" + index + "处");
}
//输出 "the"出现在str内索引值22处
在上面的示例中,str.indexOf("the")将返回“the”字符串首次出现在str内的起始索引值。如果该索引值不等于-1,即表示在str内到了“the”子字符串。
如果指定indexOf()方法的第二个可选参数,可以获取子字符串后续出现处的起始索引位置。搜索子字符串每二次出现的索引位置,最简单的方法就是传递一个起始索引参数值。但是,该参数值要比上次搜索返回的值多1,如下所示。
var str:String = "I will love you until the seas run dry and the rocks crumble.";
var index:int = str.indexOf("the");
if (index != -1){
trace("\"the\"第一次出现在str内索引值" + index + "处");
}
//输出 "the"第一次出现在str内索引值22处
var index2:int = str.indexOf("the",index + 1);
if (index2 != -1){
trace("\"the\"第二次出现在str内索引值" + index2 + "处");
}
//输出 "the"第二次出现在str内索引值43处
在上面的示例中,首先获取“the”字符串第一次出现在str的起始索引值。然后,在第二次使用indexOf()方法时,将index + 1作为第二个参数传递给该方法,这样搜索时就可以跳过上次出现处的起始索引。如果传递的第二个参数没有加1,indexOf()方法将再次返回首次出现处的起始索引。
在while语句中使用indexOf()方法,可以获取子字符串每次出现处的起始索引,如下所示。
var str:String = "I will love you until the seas run dry and the rocks crumble.";
子字符串是什么var index:int = - 1;
while((index = str.indexOf("the",index + 1)) != -1){
trace("\"the\"字符串出现在str内索引值" + index + "处");
}
/*输出:
"the"出现在str内索引值22处
"the"出现在str内索引值43处*/
在上面的示例中,将index的初始值定义为-1,即index + 1等于0,这样可以使indexOf()方法从字符串的开头开始搜索。在while语句的条件中,将indexOf()方法的返回值赋给index,这样在以后执行循环时,根据第二个参数index + 1,即可跳过上次子字符串出现处的起始索引。当indexOf()方法的返回值为-1,表示没有匹配的子字符串存在,此时while循环就可终止。
除了使用indexOf()方法搜索子字符串外,还可以使用lastIndexOf()方法从后往前搜索。将上面示例中的indexOf()方法替换为lastIndexOf()方法,如下所示。
var str:String = "I will love you until the seas run dry and the rocks crumble.";
var index:int = str.lastIndexOf("the");
if (index != -1){
trace("\"the\"最后出现在str内索引值" + index + "处");
}
//输出 "the"最后出现在str内索引值43处
获取子字符串每次出现处的起始索引,还可以结合while循环和lastIndexOf()方法,以及起始索引值,如下所示。
var str:String = "I will love you until the seas run dry and the rocks crumble.";
var index:int = str.length;
while((index = str.lastIndexOf("the",index - 1)) != -1){
trace("\"the\"字符串出现在str内索引值" + index + "处");
}
/*输出:
"the"字符串出现在str内索引值43处
"the"字符串出现在str内索引值22处*/
上面的这个示例与前面使用indexOf()方法的示例类似,不同的是,将index的初始值定义为str.length,而非先前的-1,因为lastIndexOf()方法是从后往前搜索。另外,在搜索时,不是将index + 1作为参数传递,而是index - 1,这样使用lastIndexOf()方法从上次发现之处的前面继续搜索。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。