JavaScript从入门到精通(微视频精编版)
上QQ阅读APP看书,第一时间看更新

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 对字符串进行格式化