本编主要介绍String 字符串对象。javascript
1. 介绍:阐述 String 对象的说明以及定义方式。html
2. 实例属性:介绍 String 对象的实例属性: length。java
3. 实例方法:介绍 String 对象的实例方法:charAt、charCodeAt、concat、indexOf等方法。正则表达式
String 对象,对字符串进行操做,如:截取一段子串、查找字符串/字符、转换大小写等等。数组
参数:app
①value {String} :字符串函数
返回值:编码
{String对象} 返回一个内容为Value的String对象spa
示例:3d
1
2
3
|
var
demoStr =
new
String(
'abc'
);
console.log(
typeof
demoStr);
// => object
console.log(demoStr);
// => abc
|
示例:
1
2
3
|
var
demoStr =
'abc'
;
console.log(
typeof
demoStr);
// string
console.log(demoStr);
// => abc
|
1
2
3
4
|
var
s =
'abc'
;
console.log(s.length);
// => 3
console.log(
'新年快乐'
.length);
// => 4 :一个中文字符也计算为1个数量
console.log(
''
.length);
// => 0 :空字符串返回0
|
注意:字符串的实例方法不会改变字符串的自己,只返回操做后的结果。
参数:
①index {int} :位置索引,从0开始计算
返回值:
{string} 返回一个字符串中指定位置的字符;若传入个不存在的位置数值,返回一个空字符串
示例:
1
2
3
4
|
var
s =
'abc'
;
console.log(s.charAt(1));
// => b :返回位置为1的字符
console.log(s);
// => 不影响原来的数组
console.log(s.charAt(5));
// => '' :获取一个不存在位置的字符,返回一个长度为0的空字符串
|
参数:
①index {int} :位置索引,从0开始计算
返回值:
{number} 返回一个字符串中指定位置字符的Unicode编码;若传入个不存在的位置数值,返回NaN
示例:
1
2
3
|
var
s =
'abc'
;
console.log(s.charCodeAt(0));
// => 98 :字符b的Unicode编码
console.log(s.charCodeAt(5));
// => NaN :获取一个不存在位置的字符,返回NaN
|
参数:
①value1,value2 ... valueN {string} :一个或多个字符串
返回值:
{string} 返回链接后的字符串
示例:
1
2
3
4
|
var
s =
'abc'
;
console.log(s.concat(
'd'
));
// => abcd
console.log(s);
// => abc :不影响原先的字符串
console.log(s.concat(
'd'
,
'e'
));
// => abcde
|
参数:
①value {string} :查找的字符串
②startPosition {int} 可选 :开始查找的起始位置,默认从位置0开始查找
返回值:
{int} 返回找到的位置(从0开始计数)。若未找到,返回-1
示例:
1
2
3
4
|
var
s =
'abc'
;
console.log(s.indexOf(
'b'
));
// => 1
console.log(s.indexOf(
'd'
));
// => -1 :未找到
console.log(s.indexOf(
'b'
, 2));
// => -1 :从位置2(第3个字符处)开始查找
|
参数:
①value {string} :查找的字符串
②startPosition {int} 可选 :开始查找的起始位置,默认从最后开始查找
返回值:
{int} 返回找到的位置(从0开始计数)。若未找到,返回-1
示例:
1
2
3
4
|
var
s =
'abcabc'
;
console.log(s.lastIndexOf(
'a'
));
// => 3 :从后往前查找
console.log(s.lastIndexOf(
'd'
));
// => -1 :未找到返回-1
console.log(s.lastIndexOf(
'a'
, 2));
// => 0 :从位置2(第3个字符处)开始往前查找
|
参数:
①value {string} :需比较的字符串
返回值:
0 :实例比参数大
1 :实例与参数相等
-1 :实例比参数小
示例:
1
2
3
4
|
var
s=
'abc'
;
console.log(s.localeCompare(
'ab'
));
// => 1 :实例比参数大
console.log(s.localeCompare(
'abc'
));
// => 0 :实例与参数相等
console.log(s.localeCompare(
'abd'
));
// => -1 :实例比参数小
|
参数:
①regexp {regexp} :正则表达式,eg:/\d+/
返回值:
根据正则表达式是否带属性'g',返回不一样的结果;若没匹配,就返回 {null}:
①正则表达式不带属性'g',执行一次匹配,返回{单个匹配}结果对象,对象包含如下属性:
数组序号:表示匹配结果,0为匹配文本,1为从作到右第1个圆括号匹配结果,2为第二个圆括号,依此类推
index属性:表示匹配文本在匹配源的开始位置
input属性:表示匹配源
②正则表达式带属性'g',执行全局匹配,找到字符串全部匹配对象,返回一个{字符串数组}:数组元素包含string中的每个匹配对象,不包含正则表达式括号内的字串,也不提供index和input属性。
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
// 1.单个匹配
var
s =
'a1b2c3d4'
;
var
mc = s.match(/\d+/);
// => 获取第一个正则匹配的结果
if
(mc !=
null
) {
console.log(mc.index);
// => 1 :匹配结果在匹配源的起始位置
console.log(mc.input)
// => a1b2c3d4 :匹配源
console.log(mc[0]);
// => 1 :获取匹配到的结果
}
// 2.全局匹配
var
mcArray = s.match(/\d+/g);
// => 获取所有正则匹配的数字
if
(mcArray !=
null
) {
for
(
var
i = 0,len=mcArray.length; i < len; i++) {
var
mc=mcArray[i];
console.log(mc);
// => 1,2,3,4 :获取匹配到的结果
}
}
// 2.带括号的匹配
s =
'a1b2c3d4'
;
mc = s.match(/[a-z]([1-9])/);
// => 获取第一个正则匹配的结果
if
(mc !=
null
) {
console.log(mc.index);
// => 0 :匹配结果在匹配源的起始位置
console.log(mc.input)
// => a1b2c3d4 :匹配源
console.log(mc[0]);
// => a1 :序号0表示匹配到的结果
console.log(mc[1]);
// => 1 :序号1表示第一个括号内的子匹配结果
}
|
参数:
①regexp {regexp} :正则表达式。eg:/\d+/
②replaceStr {string | function} :
1)如果字符串,表示替换的字符串,匹配到字串都替换成此字符串;
字符串中的$字符有特殊的含义:
$1,$2 ... $99 :表示①参从左到右圆括号的匹配子项
$& :表示整个①参匹配的子项
$$ :美圆符号
2)如果函数,表示每一个匹配结果都调用此函数,函数的惟一参数为匹配结果,并返回一个替换结果。
返回值:
{string} 返回一个替换后的字符串
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
var
oldStr =
'a1b2c3d4'
;
// 1.正则匹配到【全部】数字,替换成:','逗号
var
newStr = oldStr.replace(/\d+/g,
','
);
console.log(newStr);
// => a,b,c,d,
// 2.正则匹配到【全部】数字,替换成:匹配结果 + ','逗号
newStr = oldStr.replace(/\d+/g,
'$&,'
);
console.log(newStr);
// => a1,b2,c3,d4,
// 2.正则匹配到【全部】数字,每一个匹配结果都调用函数,并返回替换后的结果
newStr = oldStr.replace(/\d+/g,
function
(word) {
if
(word % 2 == 0) {
return
'偶'
;
}
return
'奇'
;
});
console.log(newStr);
// => a奇b偶c奇d偶
|
参数:
①regexp {regexp} :正则表达式。eg:/\d+/
返回值:
{int} 返回第一个匹配的结果的位置;若没找到匹配结果返回-1
示例:
1
2
|
console.log(
'abcd'
.search(/\d+/) );
// => -1 :没有找到数字
console.log(
'abcd1234'
.search(/\d+/) );
// => 4 :位置序号为4,返回第一个数字的位置
|
参数:
①start {int} :子串提取的开始位置索引(包括此位置的字符)。
若数字为负,表示从字符串尾部开始计算。如:-1表示倒数一个字符串,-2表示倒数第二个字符。
②end {int} 可选:子串提取的结束位置索引(不包括此位置的字符)。
若数字为负,表示从字符串尾部开始计算。如:-1表示倒数一个字符串,-2表示倒数第二个字符。
若省略此参数,返回从start位置到结束的全部字符。
注意:
子串的提取顺序是从左到有,若start索引位置大于end索引位置,将返回一个空字符串。
返回值:
{string} 返回从字符串start位置到end前一个位置的子串。
示例:
1
2
3
4
5
|
var
s =
'abcdefg'
;
console.log( s.slice(1) );
// bcdefg :省略end参数,结束位置为末尾
console.log( s.slice(1, 3) );
// bc :返回从位置序号1到位置序号2(end前一个位置)的子串
console.log( s.slice(-3) );
// efg :返回从倒数第三个开始到末尾的全部字符
console.log( s.slice(-3, -1) );
// ef :返回从倒数第三个开始到第二个(end前一个位置)的全部字符
|
参数:
①delimiter {regexp | string} :指定的分隔符,能够为正则表达式或字符串。
②arrayLength {int} 可选 :分割数组的长度。若省略,返回全部分割的子串。
注意:
若分隔符在字符串的第一个或最后一个,将添加一个空字符串到返回的数组。
返回值:
{ string[] } 返回一个由字符串组成的数组。
示例:
1
2
3
4
|
console.log(
'a,b,c,d,e'
.split(
','
) );
// => ["a", "b", "c", "d", "e"]
console.log(
',a,b,c,d,e,'
.split(
','
) );
// => ["", "a", "b", "c", "d", "e", ""] :分隔符在最前或最后面,会添加一个空字符串
console.log(
'a,b,c,d,e'
.split(
','
,3) );
// => ["a", "b", "c"] :返回前3个分割的子串
console.log(
'a1b2c3d4e'
.split(/\d/) );
// => ["a", "b", "c", "d", "e"] :将数字来作为分隔符
|
参数:
①start {int} :子串提取的开始位置索引(包括此位置的字符)。
若数字为负,表示从字符串尾部开始计算。如:-1表示倒数一个字符串,-2表示倒数第二个字符。
②wordLength {int} 可选 :提取字符的长度。若省略此参数,返回从start位置到结束的全部字符。
返回值:
{string} 返回提取的字符串
示例:
1
2
3
4
5
|
ar s =
'abcdefg'
;
onsole.log( s.substr(0) );
// => abcdefg :省略第二个参数,返回从位置序号0开始,一直到最后的字符
onsole.log( s.substr(0, 3) );
// => abc :返回从位置序号0开始,计数3个字符
onsole.log( s.substr(2, 4) );
// => cdef :返回从位置序号2开始,计数4个字符
onsole.log( s.substr(-2, 3) );
// fg :返回从倒数第二个字符串开始,计数3个(超过字符长度,就只返回可统计的字符)
|
参数:
①start {int} :子串提取的开始位置索引(包括此位置的字符)。数字不能为负数,若为负数按0来处理
②end {int} 可选:子串提取的结束位置索引(不包括此位置的字符)。数字不能为负数,若为负数按0来处理
返回值:
{string} 返回从字符串start位置到end前一个位置的子串。
示例:
1
2
3
4
5
|
var
s =
'abcdefg'
;
console.log( s.substring(0) );
// => abcdefg :省略end参数,返回从位置序号0开始,一直到最后的字符
console.log( s.substring(0, 3) );
// => abc :返回从位置序号0开始到位置序号2(②参的前一个)的字符
console.log( s.substring(2, 4) );
// => cd :返回从位置序号2开始到位置序号3(②参的前一个)的字符
console.log( s.substring(-3, 3) );
// abc :参数若为负,就按数字0来处理,因此此参数实际返回位置序号0到位置序号3的字符
|