码迷,mamicode.com
首页 > 其他好文 > 详细

字符串知识大全

时间:2017-04-25 21:28:12      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:编码   捕获组   多个   ast   result   多个参数   ace   调用   转换   

 String类型是字符串的对象包装类型,可以像下面这样使用String构造函数来创建。

    var stringObject = new String("hello world");

   String对象的方法也可以在所有基本的字符串值中访问到。其中,继承的valueOf()、toLocaleString()和toString()方法,都返回对象所表示的基本字符串值。

   String类型的每个实例都有一个length属性,表示字符串中包含多个字符。来看下面的例子。

    var stringValue = "hello world";
    alert(stringValue.length);    //"11"

   这个例子输出了字符串"hello world"中的字符数量,即"11"。应该注意的是,即使字符串中包含双字节字符(不是占一个字节的ASCII字符),每个字符也仍然算一个字符。String类型提供了很多方法,用于辅助完成对ECMAScript中字符串的解析和操作。

    1.字符方法    


    两个用于访问字符串中特定字符的方法是:charAt()和charCodeAt()。这两个方法都接收一个参数,即基于 0的字符位置。其中,charAt()方法以单字符字符串的形式返回给定位置的那个字符(ECMAScript中没有字符类型)。
 
 var stringValue = "hello world";
 alert(stringValue.charAt(1));   //"e"

字符串"hello world"位置1处的字符是"e",因此调用charAt(1)就返回了"e"。如果你想得到的不是字符而是字符编码,那么就要像下面这样使用charCodeAt()了。     

    var stringValue = "hello world";
    alert(stringValue.charCodeAt(1));   //输出"101"

    这个例子输出的是"101",也就是小写字母"e"的字符编码。   
 

 2.字符串操作方法


    下面介绍与操作字符串有关的几个方法。第一个就是concat(),用于将一或多个字符串拼接起来, 7返回拼接得到的新字符串。先来看一个例子。

   var stringValue = "hello ";
 var result = stringValue.concat("world");    
   alert(result);    //"hello world"
   alert(stringValue);    //"hello"

    在这个例子中,通过 stringValue 调用concat()方法返回的结果是"hello world"——但stringValue的值则保持不变。实际上,concat()方法可以接受任意多个参数,也就是说可以通过它拼接任意多个字符串。
 
 ECMAScript还提供了三个基于子字符串创建新字符串的方法:slice()、substr()和substring()。  这三个方法都会返回被操作字符串的一个子字符串,而且也都接受一或两个参数。第一个参数指定子字符串的开始位置,第二个参数(在指定的情况下)表示子字符串到哪里结束。具体来说,slice()和substring()的第二个参数指定的是子字符串最后一个字符后面的位置。而substr()的第二个参数指 定的则是返回的字符个数。如果没有给这些方法传递第二个参数,则将字符串的长度作为结束位置。与concat()方法一样,slice()、substr()和substring()也不会修改字符串本身的值——它们只是返回一个基本类型的字符串值,对原始字符串没有任何影响。
 
 在传递给这些方法的参数是负值的情况下,它们的行为就不尽相同了。其中,slice()方法会将传入的负值与字符串的长度相加,substr()方法将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0。最后,substring()方法会把所有负值参数都转换为0。
 

 3、字符串位置方法    


   有两个可以从字符串中查找子字符串的方法:indexOf()和lastIndexOf()。这两个方法都是从一个字符串中搜索给定的子字符串,然后返子字符串的位置(如果没有找到该子字符串,则返回-1)。这两个方法的区别在于:indexOf()方法从字符串的开头向后搜索子字符串,而lastIndexOf()方法 是从字符串的末尾向前搜索子字符串。
 
 这两个方法都可以接收可选的第二个参数,表示从字符串中的哪个位置开始搜索。换句话说,indexOf()会从该参数,指定的位置向后搜索,忽略该位置之前的所有字符;而lastIndexOf()则会从指定的位置向前搜索,忽略该位置之后的所有字符。看下面的例子。

    var stringValue = "hello world";
    alert(stringValue.indexOf("o", 6));    //7    
    alert(stringValue.lastIndexOf("o", 6));    //4
 

4、字符串的大小写转换方法

接下来我们要介绍的是一组与大小写转换有关的方法。ECMAScript中涉及字符串大小写转换的方法有4个:toLowerCase()、toLocaleLowerCase()、toUpperCase()和toLocaleUpperCase()。其中,toLowerCase()和toUpperCase()是两个经典的方法,借鉴自java.lang.String中的同名方法。而toLocaleLowerCase()和toLocaleUpperCase()方法则是针对特定地区的实现。对有些地区来说,针对地区的方法与其通用方法得到的结果相同,但少数语言(如土耳其语)会为Unicode大小写转换应用特殊的规则,这时候就必须使用针对地区的方法来保证实现正确的转换。

 

 6.字符串的模式匹配方法


   String类型定义了几个用于在字符串中匹配模式的方法。第一个方法就是match(),在字符串上调用这个方法,本质上与调用RegExp的exec()方法相同。match()方法只接受一个参数,要么是一个正则表达式,要么是一个RegExp对象。
 

另一个用于查找模式的方法是search()。这个方法的唯一参数与match()方法的参数相同:由字 符串或RegExp对象指定的一个正则表达式。search()方法返回字符串中第一个匹配项的索引;如果没有找到匹配项,则返回-1。而且,search()方法始终是从字符串开头向后查找模式。

为了简化替换子字符串的操作,ECMAScript提供了replace()方法。这个方法接受两个参数:第一个参数可以是一个RegExp对象或者一个字符串(这个字符串不会被转换成正则表达式),第二个参 数可以是一个字符串或者一个函数。如果第一个参数是字符串,那么只会替换第一个子字符串。要想替换所有子字符串,唯一的办法就是提供一个正则表达式,而且要指定全局(g)标志。

 

 replace()方法的第二个参数也可以是一个函数。在只有一个匹配项(即与模式匹配的字符串)的情况下,会向这个函数传递3个参数:模式的匹配项、模式匹配项在字符串中的位置和原始字符串。在正则表达式中定义了多个捕获组的情况下,传递给函数的参数依次是模式的匹配项、第一个捕获组的匹配项、第二个捕获组的匹配项……,但最后两个参数仍然分别是模式的匹配项在字符串中的位置和原始字符串。这个函数应该返回一个字符串,表示应该被替换的匹配项使用函数作为replace()方法的第二个参数可以实现更加精细的替换操作,
 
 最后一个与模式匹配有关的方法是split(),这个方法可以基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中。分隔符可以是字符串,也可以是一个RegExp对象(这个方法不会将字符串看成正则表达式)。split()方法可以接受可选的第二个参数,用于指定数组的大小,以便确保返回的数组不会超过既定大小。
 

 7.localeCompare()方法


   与操作字符串有关的最后一个方法是localeCompare(),这个方法比较两个字符串,并返回下列值中的一个:

    如果字符串在字母表中应该排在字符串参数之前,则返回一个负数(大多数情况下是-1,具体 的值要视实现而定);    

    如果字符串等于字符串参数,则返回0;

    如果字符串在字母表中应该排在字符串参数之后,则返回一个正数(大多数情况下是1,具体的 值同样要视实现而定)
 

 8.fromCharCode()方法

   另外,String构造函数本身还有一个静态方法:fromCharCode()。这个方法的任务是接收一或多个字符编码,然后将它们转换成一个字符串。从本质上来看,这个方法与实例方法charCodeAt()执行的是相反的操作。
 

字符串知识大全

标签:编码   捕获组   多个   ast   result   多个参数   ace   调用   转换   

原文地址:http://www.cnblogs.com/wuxianqiang/p/6764090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!