String与String对象

2017-11-22  本文已影响0人  飘飘流浪者

字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。

"abc"
'abc'

单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。

"It's a long journey"
'key = "value"'

如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。

var longString = "Long \
long \
long \
string";

加了反斜杠以后,原来写在一行的字符串,可以分成多行书写。但是输出的时候还是单行,效果与写在同一行完全一样。注意,反斜杠的后面必须是换行符,而不能有其他字符(比如空格),否则会报错。

转义:

如果要在单引号字符串的内部,使用单引号(或者在双引号字符串的内部,使用双引号),就必须在内部的单引号(或者双引号)前面加上反斜杠,用来转义。

'Did she say \'Hello\'?'
// "Did she say 'Hello'?"

需要用反斜杠转义的特殊字符,主要有下面这些:

\0 null(\u0000)
\b 后退键(\u0008)
\f 换页符(\u000C)
\n 换行符(\u000A)
\r 回车键(\u000D)
\t 制表符(\u0009)
\v 垂直制表符(\u000B)
\' 单引号(\u0027)
\" 双引号(\u0022)
\ 反斜杠(\u005C)

任何字符串的长度都可以通过访问其 length 属性获得,例如:

var myStr = 'the quick brown fox jumps over the lazy dog';
console.log(myStr.length)  //43

转换为字符串:

toString方法:
数值、布尔值、对象和字符串值都有toString()方法。但null和undefined值没有这种方法。故在不知道要转型的值是不是null或undefined的情况下,可用转型函数String(),这个函数可以将任何类型的值转换为字符串。

alert(10.toString()); //"10"
alert(10.toString(2));  //"1010" //2进制
alert(10.toString(8)); //"12"  //8进制
String(null);  //"null"
var a;
String(a);  // "undefined"
String(true)  //"true"

String对象:

三种基本构造函数之一,用String构造函数来创建。

var stringObject = new String("hello world")
typeof stringObject   //"object"

1.charAt()用于访问字符串中特定字符的方法:

var stringValue = "hello world"
alert(stringValue.charAt(1));  //"e"

此方法完全可以用数组下标替代。
'abc'[1] // "b"

2.String.fromCharCode()是一个静态方法。该方法的参数是一系列Unicode码点,返回对应的字符串。与之相对的是charCodeAt()方法,返回给定位置字符的Unicode码点。

String.fromCharCode(104, 101, 108, 108, 111);  // "hello"
'abc'.charCodeAt(1)   // 98

3.concat()方法用于将一个或多个字符串拼接起来,返回一个新字符串。

var myString = "hello";
console.log(myString.concat(" world"))   //"hello world"
console.log(myString.concat(" world","!"));   //"hello world!"

4.slice(),substr(),substring()三个方法是基于子字符串创建新字符串的方法。slice()和substr()的第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置(不含该位置)。而substring()的第二个参数是反回的字符个数。

var myString = "hello world";
console.log(myString.slice(3));  //"lo world"
console.log(myString.substring(3));  //"lo world"
console.log(myString.sustr(3));  //"lo world"
console.log(myString.slice(3,7));  //"lo w"
console.log(myString.substring(3,7));  //"lo w"
console.log(myString.substr(3,7));  //"lo worl"

如果传递参数为负值时,三个方法的行为则不尽相同。slice()方法将两个负参数都与字符串的长度相加;substring()将两个负参数都转换为0;而substr()将第一个负参数与字符串长度相加,将第二个负参数转换为0。

var myString = "hello world";
console.log(myString.slice(-3));  //"rld"
console.log(myString.substring(-3));  //"rld"
console.log(myString.substr(-3));  //"hello world"
console.log(myString.slice(3,-4));  //"lo w"
console.log(myString.substring(3,-4));  //"hel"
console.log(myString.substr(3,-4));  //""空字符串

5.indexOf()与lastIndexOf()

这两个方法用于确定一个字符串在另一个字符串中的位置,都返回一个整数,表示匹配开始的位置。如果返回-1,就表示不匹配。两者的区别在于,indexOf从字符串头部开始匹配,lastIndexOf从尾部开始匹配。它们还可以接受第二个参数,对于indexOf方法,第二个参数表示从该位置开始向后匹配;对于lastIndexOf,第二个参数表示从该位置起向前匹配。

var myString = "hello world";
console.log(myString.indexOf("o"));  //"4"
console.log(myString.lastIndexOf("o"));  //"7"
console.log(myString.indexOf("o",6));  //"7"
console.log(myString.lastIndexOf("o",6));  //"4"

6.trim()方法用于去除字符串两端的空格,返回一个新字符串,该方法去除的不仅是空格,还包括制表符(\t、\v)、换行符(\n)和回车符(\r)。

'  hello world  '.trim()   // "hello world"
'\r\nabc \t'.trim()   // 'abc'

7.toLowerCase()方法用于将一个字符串全部转为小写,toUpperCase()则是全部转为大写。它们都返回一个新字符串,不改变原字符串。这个方法也可以将布尔值或数组转为大写字符串,但是需要通过call方法使用。

var myString = "Hello World";
console.log(myString.toLowerCase());  //"hello world"
console.log(myString.toUpperCase());  //"HELLO WORLD"
console.log(myString.toUpperCase.call(true));  //"TRUE"
console.log(myString.toLowerCase.call(['A','B','c']));  //"a,b,c"

8.split()方法按照指定规则分割字符串,返回一个由分割出来的子字符串组成的数组。

split方法还可以接受第二个参数,限定返回数组的最大成员数。

'a|b|c'.split('|')   // ["a", "b", "c"]
'a|b|c'.split('|', 2) // ["a", "b"]
上一篇下一篇

猜你喜欢

热点阅读