ActionScript编程 搜索子字符串的位置
ActionScript编程 搜索匹配的字符串

ActionScript编程搜索匹配的字符串作用:获取一个字符或字符串,并对目标字符串中所有的字符进行匹配,返回匹配成功的字符串或索引号。
说明:正则表达式在程序应用中,除了可以匹配各种字符串外,还可以对字符串进行搜索。
在使用正则表达式搜索字符串时,需要将其与字符串实例的search()方法和match()等方法结合使用。
其中,search()方法用来检索字符串实例,返回包含指定的字符串或符合相应的正则表达式的字符索引位置;match()方法同样也是用来间色字符串实例,但其返回的结果为由字符串和符合相应正则表达式组成的数组。
示例:1.搜索字符串中的索引号使用search()方法,可以检测匹配的字符串。
在之前的章节中,这一过程通常是由字符串实现的。
例如,在一句话中检索Script,如下所示。
var str:String="ActionScript和JavaScript都是ECMAScript的子集";trace(str.search("Script"));执行上面的语句,即可返回结果6,即在这个字符串中,第7个字符起出现了单词Script。
使用正则表达式可以实现更强大的功能,例如,实现对大小写的模糊处理,可以通过正则表达式的/i标志,如下所示。
var str:String="ActionScript和JavaScript都是ECMAScript的子集";trace(str.search(/script/i));执行上面的语句,同样可以返回结果6。
正则表达式还可以忽略匹配字符串中的空白字符,如下所示。
var str:String="ActionScript和JavaScript都是ECMAScript的子集";trace(str.search(/scr ipt/ix));执行上面的语句,即可发现获得了同样的效果。
需要注意的是,无论为正则表达式设置任何参数,search()方法都将只对字符串进行1次搜索。
Actionscript 3 正则表达式的使用

as3 正则表达式的使用谈谈正则表达式,AS3.0 中引进了正则表达式。
正则表达式是用于验证文本值是否符合特定模式。
正则表达式有四个部分。
1元子符。
2元序列。
3标志。
4数量表达符。
可以这样看 pattern RegExp= /匹配字符串 元字符 元序列/标志 当然顺序可能不完全是这样.别把他想的太 复杂其实他就是个组合。
现在我们来看看元字符: ^ $ \ . * + ? ( ) [ ] { } |前面说的是元字符串的使用1.^的用法:匹配字符串的开头var pattern:RegExp=/^小虫/;var str:String="小虫是好人";trace(str, " is valid:", pattern.test(str));小虫是好人 is valid: true2.$的用法:字符串的结尾部分与前面的字符串匹配.var pattern:RegExp=/lizhen$/;var str:String="My name is lizhen";trace(str, " is valid:", pattern.test(str));小虫是好人 is valid: true仔细看一下两个符号在匹配字符串中的位置,注意:如果同时使用^符号和$符号,将进行精确匹配。
3.\的用法:转义字符如果匹配字符串中包含有"/"比如 1/2 的时候,使用如下定义var pattern:RegExp = /1\/2/;var str:String="1/2 是多少?";trace(str, " is valid:", pattern.test(str));1/2 是多少? is valid: true如果匹配字符串中包含有""比如 "lizhen" 的时候,使用如下定义var pattern:RegExp=/\"lizhen"/;var str:String="My name is \"lizhen\"";trace(str, " is valid:", pattern.test(str));My name is "lizhen" is valid: true4.*的用法:匹配 0 个或多个前面的字符.一个都没有也会返回 true;var pattern:RegExp=/我的*/;var str:String="我的我的我的";或者 var str:String="我的"trace(str, " is valid:", pattern.test(str));我的我的... is valid: true5.+的用法:匹配至少一个前面的字符var pattern:RegExp=/我的+/;var str:String="我的 ID 是...";或者 var str:String="我的"trace(str, " is valid:", pattern.test(str));我的 ID 是... is valid: true注意+和*的区别。
ActionScript编程 替换字符

ActionScript编程替换字符作用:将字符串中的一个子字符串替换为另一个子字符串。
说明:ActionScript 3.0中包含一个新的方法String.replace(),它可以在字符串中搜索指定的子字符串或正则表达式,并使用指定的替换字符串替换匹配项。
replace()方法的一般形式如下所示。
String.replace(pattern,repl);replace()方法可以接受以上两个参数,其详细介绍如下所示。
●pattern 要查找和替换的模式,可以为任何类型的对象,但通常是字符串或正则表达式。
如果指定的pattern参数是除字符串或正则表达式以外的任何其它对象,将对该参数应用toString()方法,并使用结果字符串作为pattern来执行replace()方法。
●repl 通常是以插入的字符串替换匹配内容。
但也可以指定一个函数作为此参数。
如果指定一个函数,将插入由该函数返回的字符串来替换匹配内容。
如果指定一个正则表达式作为pattern参数,并指定一个字符串作为repl参数,则可以在repl字符串中使用特殊的$替换代码,如表11-1所示。
表11-1 $代码及替换文本如下参数:●字符串的匹配部分。
●任何捕获到的括号组匹配项都将作为下一组参数提供。
按这种方式传递的参数数目因括号匹配项的数目而异。
可以通过检查函数代码中的arguments.length - 3来确定括号匹配项的数目。
●字符串中匹配开始的索引位置。
●完整的字符串。
示例:将str中的子字符串替换为另一个子字符串。
在repace()方法返回的新字符串中,已经将匹配项替换为新子字符串,然而,原有字符串并未受到影响,如下所示。
var str:String = "This is a cool day today.";var str2:String = str.replace(" is "," is not ");trace(str);trace(str2);/*输出:This is a cool day today.This is not a cool day today. */在上面的示例中,“is”这个单词作为匹配项时,两端有空格。
获取字符串中某个特定位置的字符串的方法

获取字符串中某个特定位置的字符串的方法获取字符串中某个特定位置的字符串可以采用不同的方法,其中包括使用字符索引、字符串切片、正则表达式等等。
下面将详细介绍这些方法。
使用字符索引在Python中,字符串可以被视为一个字符数组,因此可以通过索引来获取其中的字符或子字符串。
字符串的第一个字符索引为0,最后一个字符索引为字符串长度减1。
要获取字符串中特定位置的子字符串,只需要通过相应的索引进行切片即可。
下面是一个示例代码,用于获取字符串中第五个位置(也就是第六个字符)的子字符串:```str = "hello, world!"substring = str[5]print(substring)```该代码将输出:`,`,因为第五个位置上是该字符串中的逗号。
字符串切片是指从一个字符串中提取子字符串的过程。
在Python中,可以使用切片运算符“:”来获取一个特定位置之间的子字符串。
通常切片运算符的形式如下:```str[start:end:step]```start表示开始位置索引,end表示结束位置索引,step表示步长。
如果start和end 都未指定,那么切片包含整个字符串;如果step未指定,则默认为1。
该代码将输出:`o, w`。
使用正则表达式正则表达式是一种用于匹配字符模式的方法,它可以在字符串中查找特定位置的子字符串。
Python内置的re模块提供了对正则表达式的支持。
```import restr = "There are 2 apples and 3 oranges."pattern = r'\d+'该代码将输出:`2`,因为它找到了字符串中的第一个数字。
在该示例中,`r'\d+'`表示匹配一个或多个数字字符。
需要注意的是,在使用正则表达式时,需要了解相应的语法,并按照语法规则编写正确的模式。
否则,可能会导致找不到匹配项或匹配项不正确。
ActionScript编程 连接字符串

ActionScript编程连接字符串作用:把两个或多个字符串按顺序合并为一个字符串。
说明:通过使用连接运算符(+)、赋值运算符(+=)或者String.concat()方法,可以将两个或多个字符串连接为一个字符串。
两个字符串在一条表达式中,使用连接运算符+(介于两个字符串操作数之间)将它们连接起来,如下所示。
var str:String = str1 + str2;在上面的代码中,str1和str2均表示字符串文本。
如果想要连接两个以上的字符串,可以使用多个连接运算符,让字符串操作数以适当顺序进行连接,如下所示。
var str:String = str1 + str2 + str3 + …… + strN;连接运算符除了可以连接字符串文本外,还可以连接包含字符串值的变量(或可以转换为字符串的值),如下所示。
var str:String = str1 + variable + str2;在上面的代码中,str1和str2均表示字符串文本;variable表示一个包含字符串值(或可以转换为字符串的值)的变量。
在连接字符串过程中,连接运算符会自动把任何非字符串值转换为字符串,只要语句中至少有一个操作数是字符串,如下所示。
var str:String = str1 + num1 + + num2 + ……+numN;在上面的代码中,str1表示字符串文本;num1、num2等表示数字。
通过连接运算符会自动将num1、num2等数字转换为字符串文本。
然而,如果所有的操作数都是数字,ActionScript解释器就会把+运算符视为加法运算符,而非连接运算符。
此时,可以在语句开始处连接一个空字符串,如下所示。
var str:String = " " + num1 + num2 + ……+numN;则会相加而非连接,即使最终的结果仍然转换为字符串。
除此之外,还可以使用String()转换函数将表达式中的一个或多个数字转换为字符串文本,但确保至少有一个数字在进行连接前先转换为字符串文本,如下所示。
ActionScript菜鸟基础终极教程

第1章揭开ActionScript的神秘面纱ActionScript是Flash内置的编程语言,用它为动画编程,可以实现各种动画特效、对影片的良好控制、强大的人机交互以及与网络服务器的交互功能。
ActionScript是一门吸收了C++、Java以及JavaScript等编程语言部分特点的新的语言。
ActionScrip使用英文单词和元件提供了一种为Flash影片设置指令的方法。
它的存在确保了Flash影片较之普通的按照线性模式播放的动画具备强大得多的人机交互能力。
可以为时间轴中的关键帧、按钮和影片剪辑添加ActionScript。
选中这些关键帧、按钮和影片剪辑,打开其动作面板,你就可以看到它们都添加了哪些脚本。
1.1 Flash中的程序交给计算机执行的指令集称为程序。
程序的另一个名称叫做脚本。
从现在开始,我们将这些指令集统称为脚本。
脚本都必须有它的运行环境,就ActionScript来说,它的运行环境就是Flash影片。
ActionScript 可以指挥Flash影片该做什么。
在某些情况下,ActionScript还可以指挥其他的东西,如用户的操作系统、浏览器等。
但是ActionScript最主要的用途还在于控制Flash影片内部的东西。
短的脚本可以只有一行,长的脚本可以长达几千行。
它们可以作用于Flash影片的一个部分,也可以贯穿影片始终。
有人把使用了脚本的整个Flash影片看作一个程序,也有人把影片中单独出现的脚本看作一个程序。
这两种看法都正确,因为一个单独的程序也可以被定义成若干小程序。
你可能对某些编程语言已经相当熟悉或者有所了解。
例如广大网页设计者所熟知的JavaScript,以及另一种相似的语言VBScript,它们能用来编辑动态网页。
HTML(Hypertext Markup Language 超文本置标语言)是另一种特殊的语言,浏览器将按照它所包括的指令正确地显示文本和图片。
在学校里面,你可能接触过一些编程方面的课程,如BASIC、Pascal、C、Java等。
ActionScript编程 匹配字符
ActionScript编程匹配字符作用:通过正则表达式的转义和编码等方式,判断单个字符是否符合正则表达式的要求。
说明:在创建正则表达式时,有些字符不能直接使用。
例如元字符中的各种符号等,这时就需要通过转义或编码等方式间接地表示字符。
了解转义和编码后,即可根据条件判断字符的类型。
1.转义在字符串的相关章节中,已介绍过由于一些符号属于ActionScript 的关键字或运算符,因此不能在字符串中使用,必须通过转义符来表示。
在正则表达式中,同样有些字符是不允许使用的。
要使用这些符号,就必须对其进行转义处理。
正则表达式中的转义和字符串中的转义符类似,都需要在符号前加斜杠“\”,正则表达式中的转义符号如表11-3所示。
符符号,都需要先使用斜杠“\”进行转义处理。
例如,加号“+”应写为“\+”,尖号“^”应写为“\^”等。
2.编码在正则表达式中,除了使用转义符表示各种特殊字符以及元字符的符号外,还可以使用ASCII码或unicode码表示各种字符。
在字符串中,使用ASCII码或unicode码必须在编码数字前加斜杠,以示区分。
而在正则表达式中,则通常需要对ASCII码和unicode码区分处理。
在使用ASCII码时,需要先获取字符的两位16进制数字代码,然后在之前添加斜杠和x“\x”,例如,字母A的ASCII码位65,因此,在正则表达式中可以用“\x65”表示。
在使用unicode码时,则需要先获取字符的4位16进制数字代码,然后在之前添加斜杠和u“\u”,例如,尖号“^”的unicode码位005e,因此,在正则表达式中可以用“\u005e”表示。
示例:在编写各种应用程序时,经常需要对字符进行匹配处理,检测字符属于字母、数字、特殊符号,还是属于其他语言(例如,中文等)的文字。
例如,匹配字符是否属于字母ABC,可以编写正则表达式Regulara,如下所示。
var Regulara:RegExp=/^[ABC]/;trace(Regulara.test("A"));执行上面的代码,即可对字符A进行匹配操作,得到结果true。
ActionScript2.0实例--学习笔记
3.字符串运算符++进行连接时,对于不是字符串类型的数值,先将其转换成字符串,再进行连接。
如果要将两个数字类型的数字进行连接,可以借助空字符串例:m=12+34 ;n=""+12+34trace("m="+m+"\nn="+n) //输出结果m=46 换行n=1234..赋值运算符a=条件?数值1:数值2 //如果条件满足,则为值2,如果不满足,则为数值1事件处理机制用on的键盘事件控制一个元件。
新建一个元件,命名为mc,用移动键控制。
(注:可以将按钮放在屏幕外)2.影片剪辑事件onClipEvent()1.1.鼠标位置主场景的鼠标位置:_root._xmouse _root._ymouse影片剪辑鼠标位置:_root.tt_x _root.tt._y实例:打蜜蜂游戏P83实例:用createEmptyMovieClip方法创建影片剪辑852.管理深度:myMc.getDepth()//返回指定影片剪辑实例的深度parentMc.getInstanceAtDepth(depth)//返回位于parentMc内部深度depth上的影片剪辑实例实例:鼠标跟随下雪效果3.动态实现遮蔽:语句:mymc.setMask(遮蔽物)mymc为用来被遮蔽的物体名称;遮蔽物位于遮蔽层取消:mymc.setMask(null)实例:用遮蔽实现橡皮擦特效4.拖动影片剪辑方法:myMc.starDrag([lock,[left,top,right,bottom]]) //开始拖动该语句使影片剪辑成为可拖动的。
参数lock是一个布尔值,如果为true,拖动过程中将鼠标指针锁定到元件中心;如果为false,在拖动过程影片剪辑保持与鼠标在开始拖动时的相对位置不变。
默认为falsemyMc.stopDrag()注:同一个动画中只能有一个影片剪辑被拖动。
因此在开始拖动一个新的影片剪辑时,前一个将会自动停止。
ActionScript编程 正则表达式概述
ActionScript编程正则表达式概述说明:正则表达式就是用一种特殊的字符串表达式,其可以描述一些特征,然后用这种字符串去验证另一些字符串是否符合这个特征,或者替换与特征匹配的部分字符。
在ActionScript 3.0中,正则表达式通常以斜杠“/”开始和结尾。
正则表达式属于全局类RegExp的实例,因此不需要在类中链接RegExp类。
1.创建正则表达式的实例在创建正则表达式时,需要声明RegExp实例,通过构造函数为其赋值,如下所示。
var RegExpName:RegExp=new RegExp("RegExpValue");在上面的代码中,各关键字的含义如下所示。
●RegExpName 正则表达式实例的名称●RegExp 正则表达式实例的数据类型●RegExp() 正则表达式的构造函数●RegExpValue 正则表达式的值除了通过以上方式外,还可以直接声明正则表达式,然后为其赋值,如下所示var RegExpName:RegExp=RegExpValue;2.正则表达式的属性在ActionScript中,RegExp类包含多种属性供用户选择。
通过这些属性,用户可以创建自定义的正则表达式实例,如表11-1所示。
表11-1 正则表达式的属性多数正则表达式的属性都可以通过表达式标志,直接书写在表达式的尾部。
3.正则表达式的方法正则表达式实例可使用的方法主要包括两种,即exec()方法和test()方法。
exec()方法的作用是在给定的字符串中执行正则表达式搜索。
当正则表达式实例非全局匹配型时,从字符串的开头搜索,否则则从正则表达式实例指定的索引位置开始搜索。
exec()方法返回的值可以分为2种。
当字符串与正则表达式不匹配时,返回值为null;否则,返回一个对象,该对象包含一个数组、一个非负整数以及一个字符串,如下所示。
●数组元素0包含完全匹配的字符串,其他元素则为与正则表达式中的括号组相匹配的字符串●非负整数匹配的字符串在整个字符串中的位置●字符串被匹配的整个字符串test()方法的作用是对给定的字符串进行匹配测试操作。
ActionScript编程 匹配多个字符或字符串
ActionScript编程匹配多个字符或字符串作用:通过元字符、转义符以及ASCII码等正则表达式的组成部分,判断多个字符或字符串是否符合正则表达式的要求。
说明:正则表达式可以通过点“.”、星号“*”、加号“+”、问号“?”等元字符匹配若干数量的字符或字符串。
这些元字符又被称作数量元字符。
除这些元字符外,还可以通过大括号“{}”加数字的方式定义指定数量字符和字符串的匹配。
示例:1.点“.”元字符使用点“.”可以匹配任意单个字符或字符串。
例如,单词big和bug都是由字母b和g以及之间的元音字母组成,这两个单词可以通过点“.”来匹配,如下所示。
var Regular1:RegExp=/b.g/;trace(Regular1.test("big"));trace(Regular1.test("bug"));执行上面的代码,即可输出匹配的结果均为true。
2.星号“*”元字符使用星号“*”可以匹配0到任意多个字符或字符串。
例如,数字1234567890和数字10,可以通过数字1和0以及星号“*”实现匹配,如下所示。
var Regular2:RegExp=/1*0/;trace(Regular2.test("1234567890"));trace(Regular2.test("10"));执行上面的代码,即可完成匹配实验,输出结果均为true; 3.加号“+”元字符使用加号“+”元字符可以匹配一个或更多的字符或字符串。
例如,单词happen和happy都是由4个字母happ开头,即可以happ和加号“+”实现匹配,如下所示。
var Regular3:RegExp=/(happ)+/;trace(Regular3.test("happen"));trace(Regular3.test("happy"));需要注意的是加号“+”和星号“*”元字符之间是有区别的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ActionScript编程搜索子字符串的位置
作用:
在字符串内搜索子字符串,并返回其索引位置。
说明:
使用String类的indexOf()或lastIndexOf()方法,可以判断字符串中是否包含有指定的子符串值。
这两个方法都会返回找到的子字符串的起始索引。
indexOf()方法是从左向右搜索字符串,并返回在调用字符串内指定位置上或之后找到的第一个匹配项的起始索引位置。
如果未找到匹配项,则返回-1。
indexOf()方法的一般形式如下所示。
String.indexOf(substring,startIndex);
indexOf()方法包含有以上两个参数,其详细介绍如下所示。
●substring 要搜索的子字符串。
●startIndex 指定开始搜索子字符串的起始索引位置(从零开始),可选
参数。
字符串中的第一个字符的索引位置是0,而不是1。
如果省略此
参数,indexOf()方法会从字符串开头开始搜索(即从索引0处)。
lastIndexOf()方法的运行方式与indexOf()方法类似,只不过是在字符串中从右向左搜索,实质上就是从后面往回搜索字符串,并返回子字符串最后出现的起始索引位置。
即使是从后面往回搜索字符串,返回的起始索引仍然是找到的子字符串的开头位置。
如果未找到匹配项,则返回-1。
lastIndexOf()方法的一般形式如下所示。
stIndexOf(substring,startIndex);
与indexOf()方法相同,lastIndexOf()方法也包含有两个参数,其详细介绍如下所示。
●substring 要搜索的子字符串。
●startIndex 指定搜索子字符串的起始索引位置,默认为允许最大的索引
值。
如果省略该参数,lastIndexOf()方法会从字符串的末尾开始搜索(即
从索引string.length - 1处)。
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 = stIndexOf("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 = stIndexOf("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()方法从上次发现之处的前面继续搜索。