8.3 String对象的方法
视频讲解
在String对象中提供了很多处理字符串的方法,通过这些方法可以对字符串进行查找、截取、大小写转换以及格式化等一些操作。下面分别对这些方法进行详细介绍。
说明
String对象中的方法与属性,字符串变量也可以使用,为了便于读者用字符串变量执行String对象中的方法与属性,下面的例子都用字符串变量进行操作。
8.3.1 查找字符串
字符串对象提供了几种用于查找字符串中的字符或子字符串的方法。下面对这几种方法进行详细介绍。
1.charAt()方法
charAt()方法可以返回字符串中指定位置的字符。
语法如下:
stringObject.charAt(index)
参数说明。
stringObject:String对象名或字符变量名。
index:必选参数。表示字符串中某个位置的数字,即字符在字符串中的下标。
说明
字符串中第一个字符的下标是0,因此,index参数的取值范围是0~string.length-1。如果参数index超出了这个范围,则返回一个空字符串。
例如,在字符串“你好零零七,我是零零发”中返回下标为1的字符。代码如下:
01 var str="你好零零七,我是零零发"; //定义字符串 02 document.write(str.charAt(1)); //输出字符串中下标为1的字符
查找过程示意图如图8.4所示。
图8.4 查找字符示意图
运行结果为:
好
2.indexOf()方法
indexOf()方法可以返回某个子字符串在字符串中首次出现的位置。
语法如下:
stringObject.indexOf(substring,startindex)
参数说明。
stringObject:String对象名或字符变量名。
substring:必选参数。要在字符串中查找的子字符串。
startindex:可选参数。用于指定在字符串中开始查找的位置。它的取值范围是0到stringObject.length-1。如果省略该参数,则从字符串的首字符开始查找。如果要查找的子字符串没有出现,则返回-1。
例如,在字符串“你好零零七,我是零零发”中进行不同的检索。代码如下:
01 var str="你好零零七,我是零零发"; //定义字符串 02 document.write(str.indexOf("零")+"<br>"); //输出字符“零”在字符串中首次出现的位置 03 //输出字符“零”在下标为4的字符后首次出现的位置 04 document.write(str.indexOf("零",4)+"<br>"); 05 document.write(str.indexOf("零零八")); //输出字符“零零八”在字符串中首次出现的位置
查找过程示意图如图8.5所示。
图8.5 查找字符示意图
运行结果为:
2 8 -1
【例8.02】有这样一段绕口令:四是四,十是十,十四是十四,四十是四十。应用String对象中的indexOf()方法获取字符“四”在绕口令中的出现次数。代码如下:(实例位置:资源包\源码\08\8.02)
01 var str="四是四,十是十,十四是十四,四十是四十"; //定义字符串 02 var position=0; //字符在字符串中出现的位置 03 var num=-1; //字符在字符串中出现的次数 04 var index=0; //开始查找的位置 05 while(position!=-1){ 06 position=str.indexOf("四",index); //获取指定字符在字符串中出现的位置 07 num+=1; //将指定字符出现的次数加1 08 index=position+1; //指定下次查找的位置 09 } 10 document.write("定义的字符串:"+str+"<br>"); //输出定义的字符串 11 document.write("字符串中有"+num+"个四"); //输出结果
运行程序,结果如图8.6所示。
图8.6 输出指定字符在字符串中的出现次数
3.lastIndexOf()方法
lastIndexOf()方法可以返回某个子字符串在字符串中最后出现的位置。
语法如下:
stringObject.lastIndexOf(substring,startindex)
参数说明。
stringObject:String对象名或字符变量名。
substring:必选参数。要在字符串中查找的子字符串。
startindex:可选参数。用于指定在字符串中开始查找的位置,在这个位置从后向前查找。它的取值范围是0到stringObject.length-1。如果省略该参数,则从字符串的最后一个字符开始查找。如果要查找的子字符串没有出现,则返回-1。
例如,在字符串“你好零零七,我是零零发”中进行不同的检索。代码如下:
01 var str="你好零零七,我是零零发"; //定义字符串 02 document.write(str.lastIndexOf("零")+"<br>"); //输出字符“零”在字符串中最后出现的位置 03 //输出字符“零”在下标为4的字符前最后出现的位置 04 document.write(str.lastIndexOf("零",4)+"<br>"); 05 document.write(str.lastIndexOf("零零八")); //输出字符“零零八”在字符串中最后出现的位置
查找过程示意图如图8.7所示。
图8.7 查找字符示意图
运行结果为:
9 3 -1
8.3.2 截取字符串
在字符串对象中提供了几种截取字符串的方法,分别是slice()、substr()和substring()。下面分别进行详细介绍。
1.slice()方法
slice()方法可以提取字符串的片断,并在新的字符串中返回被提取的部分。
语法如下:
stringObject.slice(startindex,endindex)
参数说明。
stringObject:String对象名或字符变量名。
startindex:必选参数。指定要提取的字符串片断的开始位置。该参数可以是负数,如果是负数,则从字符串的尾部开始算起。也就是说,-1指字符串的最后一个字符,-2指倒数第二个字符,以此类推。
endindex:可选参数。指定要提取的字符串片断的结束位置。如果省略该参数,表示结束位置为字符串的最后一个字符。如果该参数是负数,则从字符串的尾部开始算起。
说明
使用slice()方法提取的字符串片断中不包括endindex下标所对应的字符。
例如,在字符串“你好JavaScript”中提取子字符串。代码如下:
01 var str="你好JavaScript"; //定义字符串 02 document.write(str.slice(2)+"<br>"); //从下标为2的字符提取到字符串末尾 03 document.write(str.slice(2,6)+"<br>"); //从下标为2的字符提取到下标为5的字符 04 document.write(str.slice(0,-6)); //从第一个字符提取到倒数第7个字符
提取过程示意图如图8.8所示。
图8.8 提取字符示意图
运行结果为:
JavaScript Java 你好Java
2.substr()方法
substr()方法可以从字符串的指定位置开始提取指定长度的子字符串。
语法如下:
stringObject.substr(startindex,length)
参数说明。
stringObject:String对象名或字符变量名。
startindex:必选参数。指定要提取的字符串片断的开始位置。该参数可以是负数,如果是负数,则从字符串的尾部开始算起。
length:可选参数。用于指定提取的子字符串的长度。如果省略该参数,表示结束位置为字符串的最后一个字符。
注意
由于浏览器的兼容性问题,substr()方法的第一个参数不建议使用负数。
例如,在字符串“你好JavaScript”中提取指定个数的字符。代码如下:
01 var str="你好JavaScript"; //定义字符串 02 document.write(str.substr(2)+"<br>"); //从下标为2的字符提取到字符串末尾 03 document.write(str.substr(2,4)); //从下标为2的字符开始提取4个字符
运行结果为:
JavaScript Java
【例8.03】在开发Web程序时,为了保持整个页面的合理布局,经常需要对一些(例如,公告标题、公告内容、文章的标题、文章的内容等)超长输出的字符串内容进行截取,并通过“…”代替省略内容。本实例将应用substr()方法对网站公告标题进行截取并输出。代码如下:(实例位置:资源包\源码\08\8.03)
01 <script type="text/javascript"> 02 var str1="明日科技即将重磅推出零基础学系列课程"; //定义公告标题字符串 03 var str2="明日商城热烈欢迎新老朋友光临惠顾"; //定义公告标题字符串 04 var str3="本网站所有商品让利销售欢迎订购"; //定义公告标题字符串 05 var str4="所有电子商品一律5折销售"; //定义公告标题字符串 06 function subStr(str){ 07 if(str.length>10){ //如果字符串长度大于10 08 return str.substr(0,10)+"..."; //返回字符串前10个字符,然后输出省略号 09 }else{ //如果字符串长度不大于10 10 return str; //直接返回该字符串 11 } 12 } 13 </script> 14 <body background="images/bg.jpeg"> 15 <div class="public"> 16 <ul> 17 <script type="text/javascript"> 18 document.write("<li>"+subStr(str1)+"</li>"); //输出截取后的公告标题 19 document.write("<li>"+subStr(str2)+"</li>"); //输出截取后的公告标题 20 document.write("<li>"+subStr(str3)+"</li>"); //输出截取后的公告标题 21 document.write("<li>"+subStr(str4)+"</li>"); //输出截取后的公告标题 22 </script> 23 </ul> 24 </div> 25 </body>
运行程序,结果如图8.9所示。
图8.9 截取网站公告标题
3.substring()方法
substring()方法用于提取字符串中两个指定的索引号之间的字符。
语法如下:
stringObject.substring(startindex,endindex)
参数说明。
stringObject:String对象名或字符变量名。
startindex:必选参数。一个非负整数,指定要提取的字符串片断的开始位置。
endindex:可选参数。一个非负整数,指定要提取的字符串片断的结束位置。如果省略该参数,表示结束位置为字符串的最后一个字符。
说明
使用substring()方法提取的字符串片断中不包括endindex下标所对应的字符。
例如,在字符串“你好JavaScript”中提取子字符串。代码如下:
01 var str="你好JavaScript"; //定义字符串 02 document.write(str.substring(2)+"<br>"); //从下标为2的字符提取到字符串末尾 03 document.write(str.substring(2,6)+"<br>"); //从下标为2的字符提取到下标为5的字符
运行结果为:
JavaScript Java
8.3.3 大小写转换
在字符串对象中提供了两种用于对字符串进行大小写转换的方法,分别是toLowerCase()和toUpperCase()。下面对这两种方法进行详细介绍。
1.toLowerCase()方法
toLowerCase()方法用于把字符串转换为小写。
语法如下:
stringObject.toLowerCase()
参数说明。
stringObject:String对象名或字符变量名。
例如,将字符串“MJH My Love”中的大写字母转换为小写。代码如下:
01 var str="MJH My Love"; //定义字符串 02 document.write(str.toLowerCase()); //将字符串转换为小写
运行结果为:
mjh my love
2.toUpperCase()方法
toUpperCase()方法用于把字符串转换为大写。
语法如下:
stringObject.toUpperCase()
参数说明。
stringObject:String对象名或字符变量名。
例如,将字符串“MJH My Love”中的小写字母转换为大写。代码如下:
01 var str="MJH My Love"; //定义字符串 02 document.write(str.toUpperCase()); //将字符串转换为大写
运行结果为:
MJH MY LOVE
8.3.4 连接和拆分
在字符串对象中还提供了两种用于连接和拆分字符串的方法,分别是concat()和split()。下面对这两种方法进行详细介绍。
1.concat()方法
concat()方法用于连接两个或多个字符串。
语法如下:
stringObject.concat(stringX,stringX,…)
参数说明。
stringObject:String对象名或字符变量名。
stringX:必选参数。将被连接的字符串,可以是一个或多个。
注意
使用concat()方法可以返回连接后的字符串,而原字符串对象并没有改变。
例如,定义两个字符串,然后应用concat()方法对两个字符串进行连接。代码如下:
01 var nickname=new Array("东邪","西毒","南帝","北丐"); //定义人物绰号数组 02 var name=new Array("黄药师","欧阳锋","段智兴","洪七公"); //定义人物姓名数组 03 for(var i=0;i<nickname.length;i++){ 04 document.write(nickname[i].concat(name[i])+"<br>"); //对人物绰号和人物姓名进行连接 05 }
运行结果为:
东邪黄药师 西毒欧阳锋 南帝段智兴 北丐洪七公
2.split()方法
split()方法用于把一个字符串分割成字符串数组。
语法如下:
stringObject.split(separator,limit)
参数说明。
stringObject:String对象名或字符变量名。
separator:必选参数。指定的分割符。如果把空字符串("")作为分割符,那么字符串对象中的每个字符都会被分割。
limit:可选参数。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的数组元素个数不会多于这个参数。如果省略该参数,整个字符串都会被分割,不考虑数组元素的个数。
例如,将字符串“I like JavaScript”按照不同方式进行分割。代码如下:
01 var str="I like JavaScript"; //定义字符串 02 document.write(str.split(" ")+"<br>"); //以空格为分割符对字符串进行分割 03 document.write(str.split("")+"<br>"); //以空字符串为分割符对字符串进行分割 04 document.write(str.split(" ",2)); //以空格为分割符对字符串进行分割并返回两个元素
运行结果为:
I,like,JavaScript I, ,l,i,k,e, ,J,a,v,a,S,c,r,i,p,t I,like
【例8.04】 《水浒传》是我国古典四大名著之一,书中对宋江、卢俊义、林冲、鲁智深、武松等主要人物都作了详细的描写。现将这5个人物的名称、绰号和主要事迹分别定义在3个字符串中,各个人物、绰号和主要事迹以逗号“,”进行分隔,应用split()方法和for循环语句将这些人物信息输出在表格中。代码如下:(实例位置:资源包\源码\08\8.04)
01 <table cellspacing="1" bgcolor="#999999"> 02 <tr height="30" bgcolor="#FFFFFF"> 03 <th align="center" width="100">人物名称</th> 04 <th align="center" width="100">人物绰号</th> 05 <th align="center" width="160">主要事迹</th> 06 </tr> 07 <script type="text/javascript"> 08 var name="宋江,卢俊义,林冲,鲁智深,武松"; //定义人物名称字符串 09 var nickname="及时雨,玉麒麟,豹子头,花和尚,行者"; //定义人物绰号字符串 10 //定义主要事迹字符串 11 var story="领导梁山起义,活捉史文恭,风雪山神庙,倒拔垂杨柳,醉打蒋门神"; 12 var nameArray=name.split(","); //将人物名称字符串分割为数组 13 var nicknameArray=nickname.split(","); //将人物绰号字符串分割为数组 14 var storyArray=story.split(","); //将主要事迹字符串分割为数组 15 for(var i=0;i<nicknameArray.length;i++){ 16 document.write("<tr height=26 bgcolor='#FFFFFF'>"); //输出<tr>标记 17 document.write("<td align='center'>"+nameArray[i]+"</td>"); //输出人物名称 18 document.write("<td align='center'>"+nicknameArray[i]+"</td>"); //输出人物绰号 19 document.write("<td align='center'>"+storyArray[i]+"</td>"); //输出主要事迹 20 document.write("</tr>"); //定义</tr>结束标记 21 } 22 </script> 23 </table>
运行程序,结果如图8.10所示。
图8.10 输出梁山好汉人物信息
8.3.5 格式化字符串
在字符串对象中还有一些用来格式化字符串的方法,这些方法如表8.1所示。
表8.1 String对象中格式化字符串的方法
例如,将字符串“你好JavaScript”按照不同的格式进行输出。代码如下:
01 var str="你好JavaScript"; //定义字符串 02 document.write("原字符串:"+str+"<br>"); //输出原字符串 03 document.write("big:"+str.big()+"<br>"); //用大号字体显示字符串 04 document.write("small:"+str.small()+"<br>"); //用小号字体显示字符串 05 document.write("fontsize:"+str.fontsize(6)+"<br>"); //设置字体大小为6 06 document.write("bold:"+str.bold()+"<br>"); //使用粗体显示字符串 07 document.write("italics:"+str.italics()+"<br>"); //使用斜体显示字符串 08 //创建超链接 09 document.write("link:"+str.link("http://www.mingribook.com")+"<br>"); 10 document.write("strike:"+str.strike()+"<br>"); //为字符串添加删除线 11 document.write("fixed:"+str.fixed()+"<br>"); //以打字机文本显示字符串 12 document.write("fontcolor:"+str.fontcolor("blue")+"<br>"); //设置字体颜色 13 document.write("sub:"+str.sub()+"<br>"); //把字符串显示为下标 14 document.write("sup:"+str.sup()); //把字符串显示为上标
运行程序,结果如图8.11所示。
图8.11 对字符串进行格式化