属性:length
方法:
-
charAt()
返回在指定位置的字符。
如果超出范围,返回一个空的字符串
var str="abc"
console.log(str.charAt(0))//a
console.log(str.charAt(10))
-
charCodeAt()
返回在指定的位置的字符的 Unicode 编码。
如果超出范围,返回NaN
var str="abc"
console.log(str.charCodeAt(1))//98
-
concat()
连接字符串。返回一个新的字符串。
其实使用“+”更方便
var a = "abc";
var b = "def";
var c = a.concat(b);
console.log(c);//abcdef
-
indexOf()
检索字符串。参数:字符串。返回某个指定的字符串值在字符串中第一次出现的位置。找不到则返回-1。indexOf() 方法对大小写敏感!
可选参数:两个整数:规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。超过则返回-1。如省略该参数,则将从字符串的首字符开始检索。
var str="Hello world!"
console.log(str.indexOf("Hello"))//0
console.log(str.indexOf("World"))//-1
console.log(str.indexOf("world"))///6
-
match()
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。返回情况请看例子
var str="1 abc 2 def 3"
console.log(str.match('abc')) // ["abc", index: 2, input: "1 abc 2 def 3"]
console.log(str.match(/\d+/g)) // ["1", "2", "3"]
-
replace()
用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。返回新字符串,旧字符串不变
var str='abcbaaahfhji'
console.log(str.replace(/^a/,"A")) // Abcbaaahfhji
console.log(str.replace(/^a/g,"A")) // AbcbAAAhfhji
console.log(str.replace("b","B")) // aBcbaaahfhji
str // 'abcbaaahfhji'
-
search()
用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1。返回第一次出现位置
var str="abc DEF!"
console.log(str.search(/DEF/)) // 4
-
slice()
提取字符串的片断,并在新的字符串中返回被提取的部分。
stringObject.slice(start,end);
start :要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。
end:紧接着要抽取的片段的结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。
var str="abc def ghk"
console.log(str.slice(6))//f ghk
-
split()
把字符串分割为字符串数组。
stringObject.split(separator,howmany)
separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
var str="abc def ghi jkl"
console.log(str.split(" "))//["abc", "def", "ghi", "jkl"]
console.log(str.split("") )//["a", "b", "c", " ", "d", "e", "f", " ", "g", "h", "i", " ", "j", "k", "l"]
console.log(str.split(" ",3))//["abc", "def", "ghi"]
-
toLocaleLowerCase()、toLowerCase()
把字符串转换为小写。
与 toLowerCase() 不同的是,toLocaleLowerCase() 方法按照本地方式把字符串转换为小写。只有几种语言(如土耳其语)具有地方特有的大小写映射,所有该方法的返回值通常与 toLowerCase() 一样。
var str="ABC def!"
console.log(str.toLocaleLowerCase())//abc def!
-
toLocaleUpperCase() 、toUpperCase()
把字符串转换为大写。
var str="ABC def!"
console.log(str.toLocaleUpperCase())//ABC DEF!
-
substr()
从起始索引号提取字符串中指定数目的字符。
stringObject.substr(start,length)。
start:必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
length:可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。
var str="abc def"
console.log(str.substr(2))//c def
console.log(str.substr(2,4))// c de
-
substring()
提取字符串中两个指定的索引号之间的字符。
stringObject.substr(start,length)。
start :必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
stop :可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。
var str="abc def"
console.log(str.substr(2))//c def
console.log(str.substr(2,4))// c de
Es6新增数组方法
-
字符串的遍历器接口 for of
for (let codePoint of 'abc') {
console.log(codePoint)
}
// "a"
// "b"
// "c"
-
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个位置直到字符串结束。
-
repeat()
repeat方法返回一个新字符串,表示将原字符串重复n次。
'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""
参数如果是小数,会被取整。
'na'.repeat(2.9) // "nana"
如果repeat的参数是负数或者Infinity,会报错。
'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError
-
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"
-
matchAll()
matchAll方法返回一个正则表达式在当前字符串的所有匹配。
-
字符串模板
模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。-----字符串模板,工作中用到比较多。
1.普通字符串
In JavaScript '\n' is a line-feed.
2.多行字符串,所有的空格和缩进都会被保留在输出之中。如果你不想要这个换行,可以使用trim方法消除它。
console.log(`string text line 1
string text line 2`.trim());
// string text line 1
// string text line 2
$('#list').html(`
<ul>
<li>first</li>
<li>second</li>
</ul>
`.trim());
3.嵌入变量,需要将变量名写在${}之中。需要先定义变量
// 字符串中嵌入变量
let name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`
4.模板字符串之中还能调用函数。
function fn() {
return "Hello World";
}
`foo ${fn()} bar`
// foo Hello World bar
5.如果大括号内部是一个字符串,将会原样输出。
`Hello ${'World'}`
// "Hello World"
6.模板字符串甚至还能嵌套。
const tmpl = addrs => `
<table>
${addrs.map(addr => `
<tr><td>${addr.first}</td></tr>
<tr><td>${addr.last}</td></tr>
`).join('')}
</table>
`;
7.大括号内部可以放入任意的 JavaScript 表达式,可以进行运算,以及引用对象属性。
let x = 1;
let y = 2;
`${x} + ${y} = ${x + y}`
// "1 + 2 = 3"
`${x} + ${y * 2} = ${x + y * 2}`
// "1 + 4 = 5"
let obj = {x: 1, y: 2};
`${obj.x + obj.y}`
// "3"
如果大括号中的值不是字符串,将按照一般的规则转为字符串。比如,大括号中是一个对象,将默认调用对象的toString方法。
8.上面代码中的模板字符串,都是用反引号表示。如果在模板字符串中需要使用反引号,则前面要用反斜杠\转义。
let greeting = `\`Yo\` World!`; // "`Yo` World!"








网友评论