JS基础帮助文档_第1页
JS基础帮助文档_第2页
JS基础帮助文档_第3页
JS基础帮助文档_第4页
JS基础帮助文档_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、javascript提供了在字符帝中杏找子g的函数indexof()> lastindexof()> search(),还捉供了 字符串的替换函数replace(),而这些函数没有在数组对象array屮实现。为了让array也支持以上方法,我们可以対amy对象原型进行修改,增加了相应函数。让 这些函数和string对象的函数同名且语法相近,以方便我们使用。下面做一些简单介绍,读 者也可根据需要自己定义其它方法。判断一个字符串是否包含另一个字符串,substr:子字符串,start:开始位置atotype.indexof=function(substr,stcirt)

2、var ta,rt,d=o,;if(start!=null) ta=this.slice(start);rt=start; else ta=this;rt=o;)var str=d+ta.join(d)+d,t=st r.indexof(d+substt+d);if(t=-l)return 1 ;rt+=str.slice(o,t).replace(/ao/g/r).length;return rt;该方法自右向左查找,返冋substr在strobj中最后出现的位置,如果没有找到,返冋-1。array, prototypeas(indexof二fimc(ion(siibstr,start)va

3、r ta9rt,d=0f;if(start !=null) ta=this.slice(start);rt=start; (else ta=this;rt=o; ta=ta.reverse();var str=d+ta,join(d)+d,t=str.indexof(d+substr+d);if(t=-l)return i ;rt+=str.slice(t).replace(/ao/g/,)jength-2;return rt;该方法替换字符串中的reg为rpby,比较常用。atotype.replace=function(reg,rpby)var ta=this.slice(

4、o),d=,o,;var str=ta.join(d);str=st r.replace(reg,rpby);return sti*.split(d);寻找字符串中的指定子串atotype.seai-ch=function(reg)var ta=this.slice(0)9d=f0str=d+ta.join(d)+d,regstr=reg.tostring();reg=new regexp(regstr.replace(a/(.ln)+)v.*/g,0$l0,),regstr.slice(regstr.lastindexof(7')+l); t=str.search(r

5、eg);if(t=-1 )return -l;return str.slice(o,t).replace(/a0/g/r).length;以上卩q种方法均实现了对数组屮每个元素都进行查找或替换,这样大家就不用做个循环浪费 吋间了。二、js对字符串的操作。1、字符串的创建创建一个字符串育儿种方法。最简单的是川引号将一组字符包含起来,可以将其赋值给一个 字符串变量。var mystr = "hello, string!"我们在上回脚本创建了字符串,但本质上,它们并不是真正的字符串对彖,准确地说,它们 是字符串类型的值。要创建一个字符串对象,可使用如下语句:炖strobj = n

6、ew string("hello, string!*);使用typeof运算符查看会发现,上而的mystr类型为string,而strobj类型为object。 如果想知道字符串的长度,使用其length属性:string.iengtho 得到字符串的指定位置的字符使用方法:string.charat(index);2、字符串的拼接a) .非常简单,就川一个”+“将两个字符串“相加“:var longstring = "one piece " + "plus one more piece."b) .要将多个字符串累积为一个字符帝,还可以使用”+

7、=“操作符:var result =result += "my name is anders"result += " and my age is 25"c) .要在字符串中添加换行符,需要使丿kl转义字符”n”:var confirmstring = "you did not enter a response to the last" +"question.nnsubmit form anyway?"var confirm value = confi rm(con fi rmstri ng);但这种方法只能用在像警

8、告、确认对话框之类的情况下,如杲将这段文木作为html内容 呈现,就无效了,此时用h<br>"代替它:var htmlstring = "first line of string.<br>second line of string."document. write(htmlstring);string对象还提供了方法concat(),它完成与”+”相同的功能:string.concat(valuel, value2,.)不过concat()方法显然不如“+“來得直观简洁。3、访问字符串的子串使用substringo或slice。方法(nn4

9、+, ie4+),下面说明它们的具体用法。substring()的原型为:string.substring(from, to)笫一个参数from指定了子字符串在原字符串中的起始位置(基于0的索引);第二个参数to 是可选的,它指定了子字符串在原字符串的结束位置(基于0的索引),-般情况下,它应比 from大,如果它被省略,那么子字符串将一直到原字符串的结尾处。如果参数from不小心比参数to大了会怎样? javascript会白动调解子字符串的起止位置, 也就是说,substringo总是从两个参数屮较小的那个开始,到较人的那个结束。不过要注意, 它包含起始位置的那个字符,但不包含结束位置的那

10、个字符。var fullstring = "every dog has his day."var section = fullstring.substring(o, 4); / section is "ever".slice()的原型为:string.slice(start, end) 参数start 示子串的起始位置,如杲为负数,那么可以理解为倒数第儿个开始,例如-3表 示从倒数第三个开始;参数end表示结束位置,与start -*样,它也可以为负数,其含义也 表示到倒数笫几个结朿。slice。的参数可以为负数,所以要比substring()更加灵活,

11、但没那 么宽容了,如果start比end要大,它将返冋一个空字符串(示例略)。还有-一个方法是 substr(),其原型为:string.substr(start, length)从原型可以看出它的参数的含义,start表示起始位置length则表示子字符串的长度。 javascript标准不提倡使用该方法。4、字符串的大小写转换使用 tolowercase()u touppercase()方法:var city 二” shanghai”;city = city.tolowercase(); / city is "shanghai” now.5、判断两个字符串是否相等先将川户的输入值

12、全部转换为大写(或小写),然后再行比较:var name = document.forml.txtusername.value.tolowercase();if(name = "urname")/ statements go here.javascript有两种相等运算符。一种是完全向后兼容的,标准的”=“,如果两个操作数类型 不一致,它会在某些时候口动对操作数进行类型转换,考虑下面的赋值语句:var stra = "i love you!"var strb = new string("i love you!");这两个变量含有相同的

13、字符序列,但数据类型却不同,前者为string,后者为object,在使 用操作符时,javascript会尝试各种求值,以检测两者是否会在某种情况下相等。所以 下面的表达式结果为true: stra = strb第二种操作符焰”严格“的'=",它在求值时不会这么宽容,不会进行类型转换。所以表达 式stra= strb的值为false,虽然两个变量持有的值相同。有时代码的逻辑要求你判断两个值是否不相等,这甲也右两个选择和严格的它 们的关系就类似于和”=”。讨论:和“!在求值时会尽可能地寻找值的匹配性,但你可能还是想在比较前进行显式的类型 转换,以“帮助陀们完成工作。比如,如果

14、想判断一个用户的输入值(字符串)是否等于一 个数字,你可以让帮你完成类型转换:if(document.form 1 .txtage.value = somenumericvar) . 也可以提前转换:if(parselnt(document.form 1 .txtage.value) = sonienumericvar) . 如杲你比较习惯于强类型的编程语言(比如c#,java等),那么这里你可以延续你的习惯(类型 转换),这样也会增强程序的可读性。有一种情况需要注意,就是计算机的区域设置。如果丿v"和来比较字符串,那么javascript 把它们作为unicode来比较,但显然,人

15、们在浏览网页时不会把文本当作unicode来阅读:)比 如在西班牙语中,按照传统的排序,“ch“将作为一个字符排在“c”和“d”之间。localecompare() 提供了一种方式,可以帮助你使川默认区域设置下的字符排序规则。var strings; /要排序的字符串数组,假设已经得到初始化strings.sort(function(a,b) return a.localecompare(b) ); / 调用 sort()方法进彳j排序6、字符串的查找使用 string 的 indexof()方法:strobj.indexof(substringi, startindex)strobj为要进行

16、判断的字符串,substring为要在strobj查找的子字符串,startindex是可选 的,表示查找的开始位置(基于0的索引),如果startindex省略,则从strobj开始处查找, 如果startindex小于0,则从0开始,如果startindex大于最大索引,则从最大索引处开始。 indexof()返回strobj中substring的开始位置,如果没有找到,则返回1。在脚本中,可以 这么使用:if(largestring.indexof(shortstring) !二1)/如果包含,进行相应处理;也许一个字符串会包含另一字符串不止一次,这时第二个参数startindex也许会

17、派上用场, 下而这个函数演示如何求得一个字符串包含另外一个字符串的次数:function countinstances(mainstr, substr)var count = 0;var offset = 0;dooffset = mainstr.indexof(substr, offset);if(offset !=-l)coun(+;offset += subst length;while(offset != -1)return count;string 对象有一个与 indexof()对应的方法,lastindexof():strobj.lastindexof(substring, st

18、artindex)strobj为要进行判断的字符串,substring为耍在strobj查找的子字符串,startindex是可选 的,表示查找的开始位置(基于0的索引),如果startindex省略,则从strobj末尾处查找, 如果startindex小于0,则从0开始,如果startindex大于最大索引,则从最大索引处开始。 该方法自右向左查找,返冋substring在strobj中最后出现的位置,如果没有找到,返冋1。7、在unicode值和字符串中的字符间转换问题:获得一个字符的unicode编码值,反z亦然。解决方案:要获得字符的unicode编码,可以使川string.char

19、codeat(index)方法,其定义为: strobj.charcode at(index)index为指定字符在strobj对象中的位置(基于0的索引),返冋值为0与65535之间的16 位整数。例如:var strobj 二”abcdefg”;var code = strobj.charcodeat(2); / unicode value of character rcr is 67如果index指定的索引处没有字符,则返冋值为nano要将unicode编码转换为一个字符,使用string.fromcharcode()方法,注意它是string对象 的一个”静态方法”,也就是说在使用前不

20、需要创建字符串实例:string.fromcharcode(cl, c2,.)它接受0个或多个整数,返回一个字符串,该字符串包含了各参数指定的字符,例如:var str = string.fromcharcode(72, 101, 108, 108, 111);/str 二二” hello”三、js对数组的操作1、数组的创建var arrayobj = new arrayo; 创婕一个数组var aitayobj = newarray(sizej); 创建一个数组并指定长度,注意不是上限,是长度var arrayobj = new array(element0, element 1 ,elem

21、entn); 创建一个数组并赋值要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的, 也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会 随z改变。2、数组的元素的访问var testgetarrvalue=arrayobj 1 ; /获取数纟i 的元索值arrayobj 1 ="这是新值"给数组元素赋予新的值3、数组元索的添加arrayobj.push(item 1 iteni2 . . itemn );/将一个或多个新元素添加到数组结尾,并返回 数组新长度arrayobj.unshift(fitem 1 item

22、? . itemn );/将一个或多个新元素添加到数组开始,数组 屮的元素自动后移,返回数组新长度arrayobj.splice(insertpos,0,iteml, item2, . . . ,itemnj);将一个或多个新元素插入到数组 的指定位置,插入位置的元素自动后移,返回“”。4、数组元素的删除 anayobj.popo; /移除最后一个元素并返回该元素值arrayobj.shift(); /移除瑕前一个元素并返冋该元素值,数组中元素0动前移arrayobj.splice(deletepos,deletecount); / 删除从指疋位置 deletepos 开始的指定数量 dele

23、tecount的元素,数组形式返冋所移除的元索5、数组的截取和合并arrayobj.slice(start, end); /以数纽.的形式返冋数纽.的一部分,注意不包括end对应的元素, 如果省略end将复制start之后的所有元素arrayobj.concat(iteml, item2,. . ,itemn); /多个数组(也可以是字符串,或者是数组 和字符串的混合)连接为一个数纽,返冋连接好的新的数组6、数组的拷贝anayobj.slice(o);/返回数组的拷贝数组,注意是一个新的数组,不是指向arrayobj.concat(); /m冋数组的拷贝数组,注意是一个新的数组,不是指向7、数

24、组元素的排序anayobj.reverse();/反转元素(故前的排到授后、故后的排到最而),返回数组地址arrayobj.sorto; 对数组元索排序,返冋数组地址8、数组元素的字符串化anayobj.join(separator);返冋字符串,这个字符串将数组的每一个元素值连接在一起,中间 用 separator 隔开。tolocalestring、tostring、valueof: nj'以看作是 join 的特殊用法,不常用9、length 属性length属性表示数组的长度,即其中元素的个数。因为数组的索引总是市0开始,所以一 个数组的上下限分别是:0和length-lo和其

25、他大多数语言不同的是,javascript数组的length 属性是可变的,这一点需要特别注意。当length属性被设置得更人时,整个数组的状态事实 上不会发生变化,仅仅是length属性变人;当length 0性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。下而是演示改变length属性的例子:var arr=l 2,23,5,3,25,98,76,54,56,76;定义了一个包含10个数字的数组 alert(arr.length); 显示数组的长度10 arr.length=12; 增大数组的长度 alert(arr.length); 显示数组的长度己经变

26、为12alert(arr8); /显示第9个元素的值,为56arr.length=5;/w-数组的长度减少到5,索引等于或超过5的元素被丢弄alert(arr8); /显示第9个元素已经变为"undefined0air.length=io;将数组长度恢复为10alert(arr8); /jti,然长度被恢复为10,但第9个元索却无法收冋,显示"undefined"由上血的代码我们对以淸楚的看到length属性的性质。但length对彖不仅可以显式的设置, 它也有可能被隐式修改。javascript屮可以使川一个未声明过的变量,同样,也可以使用一 个耒定义的数组元素(指索引超过或等于length的元素),这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论