属性
1)长度length:String使用长度属性length来计算字符串的长度
var text = 'hello world!';
console.log(text.length) ==>12
2)原型prototype:用来给对象添加属性或方法,并且添加的方法或属性在所有的实例上共享。因此也常用来扩展js内置对象
String.prototype.len=199;//即string的原型对象中添加一个属性,改属性名len,属性值为199
3)constructor:返回创建该对象的数组函数
方法
1)下标取值charAt():查找某字符串特定索引位置的字符
var a = 'hello'
var b = a.charAt(2) //取第下标为2的值
console.log(b) // l
2)charCodeAt():返回指定位置的字符的 Unicode 编码
var str = "HELLO WORLD";
var n = str.charCodeAt(0);
//输出结果
72
3)拼接concat():连接两个或更多字符串,并返回新的字符串
var str = "CodePlayer";
str = str.concat(",http://www.365mini.com");
document.writeln( str ); // CodePlayer,http://www.365mini.com
4)查找indexOf():函数用于查找子字符串在当前字符串中第一次出现的位置 ,没有返回-1
var str = 'hello world!';
var index = str.indexOf('he');//返回'he'第一次出现位置的起始索引
//结果:
index = 0
5)lastIndexOf():查找子字符串在当前字符串中最后一次出现的位置, ,没有返回-1
6)替换replace():用于使用指定字符串替换当前字符串中匹配指定正则表达式模式的子字符串或字符串,并返回完成替换后的字符串
//语法:
stringObject.replace( search, replacement )
var str = 'hello world!';
var a = str.replace('l','w')
//结果:
a = 'hewwo worwd!'
7)截图slice(start,end):提取字符串的片断,并在新的字符串中返回被提取的部分,[start,end)
var str="Hello world!";
var n=str.slice(1,5);
//结果
n = ello
8)split():把字符串分割成字符串数组
var str="How are you doing today?";
var n=str.split(" ");
console.log(n) //[How,are,you,doing,today?]
9)substr(index,length):从起始索引号提取字符串中指定数目的字符,index位置开始截取length长度,length无参数时到最后
var str = 'hello world!';
var n = str.split(2,3);
//输出结果
n = ll0
10)substring():提取字符串中两个指定的索引之间的字符-----注意:包括 开始 处的字符,但不包括 结束 处的字符
//语法
string.substring(from, to) //from:起始索引的位置 to:结束处的索引
var str = ‘hello world!’;
var n = str.substring(3,7)
//输出结果
n = 10 w
11)toLowerCase():把字符串转换为小写
//语法:string.toLowerCase()
var str="HELLO World!";
str = str.toLowerCase();
//结果
str = 'hello world!'
12)toUpperCase():把字符串转换为大写
var str = 'express';
str = str.toUpperCase();
//结果
str = EXPRESS
13)trim():去除字符串两边的空白
14)valueOf():返回某个字符串对象的原始值。
var str="shang hai;
str = str.valueOf();
//结果
str = shang hai
15)字符串的遍历 for…of
for (let codePoint of 'foo') {
console.log(codePoint)
}
// "f"
// "o"
// "o"
除了遍历字符串,这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点。
16) includes(), startsWith(), endsWith()
includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
let s = 'Hello world!';
s.startsWith('Hello') // true
s.endsWith('!') // true
s.includes('o') // true
这三个方法都支持第二个参数,表示开始搜索的位置。
let s = 'Hello world!';
s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false
上面代码表示,使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。
17)repeat()
repeat方法返回一个新字符串,表示将原字符串重复n次。
'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""
参数如果是小数,会被取整。如果repeat的参数是负数或者Infinity,会报错。
'na'.repeat(2.9) // "nana"
'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError
但是,如果参数是 0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0 到-1 之间的小数,取整以后等于-0,repeat视同为 0。参数NaN等同于 0。
'na'.repeat(-0.9) // ""
'na'.repeat(NaN) // ""
如果repeat的参数是字符串,则会先转换成数字。
'na'.repeat('na') // ""
'na'.repeat('3') // "nanana"
18) padStart(),padEnd()
ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
上面代码中,padStart()和padEnd()一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。
如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。
'xxx'.padStart(2, 'ab') // 'xxx'
'xxx'.padEnd(2, 'ab') // 'xxx'
如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。
'abc'.padStart(10, '0123456789')
// '0123456abc'
如果省略第二个参数,默认使用空格补全长度。
'x'.padStart(4) // ' x'
'x'.padEnd(4) // 'x '
padStart()的常见用途是为数值补全指定位数。下面代码生成 10 位的数值字符串。另一个用途是提示字符串格式。
'1'.padStart(10, '0') // "0000000001"
'12'.padStart(10, '0') // "0000000012"
'123456'.padStart(10, '0') // "0000123456"
'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"
19) matchAll()
matchAll方法返回一个正则表达式在当前字符串的所有匹配,详见《正则的扩展》的一章。