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"]