JS 内置对象之 String
String 全局对象是一个用于字符串或字符序列的构造函数。
一、属性
1、length
表示该字符串的长度。
var x = "Mozilla";
console.log(x.length); // 7
二、方法
1、charAt()
str.charAt(index)
功能:返回指定位置的字符。
参数:index(必须):表示指定位置的数字,如果 index 不在 0 与 string.length 之间则返回空字符串,如果省略则设为 0。
返回值:指定位置的字符。
示例:
const str = "HELLO WORLD";
console.log(str.charAt(str.length - 1)); // D
console.log(str.charAt(str.length)); // ''
console.log(str.charAt()); // H
2、charCodeAt()
str.charCodeAt(index)
功能:返回指定位置字符的 Unicode 编码。
参数:index(必须):表示指定位置的数字,如果省略或为非数值则默认为 0。
返回值:指定位置字符的 Unicode 编码。
示例:
const str = "HELLO WORLD";
console.log(str.charCodeAt(-1)); // NaN
console.log(str.charCodeAt(0)); // 72
console.log(str.charCodeAt()); // 72
console.log(str.charCodeAt('a')); // 72
console.log(str.charCodeAt(str.length - 1)); // 68
console.log(str.charCodeAt(str.length)); // NaN
3、indexOf
str.indexOf(searchValue [, fromIndex])
功能:返回指定值在字符串中首次出现的位置。
参数:
- searchValue(必须):被查找的字符串值,如果省略则默认为 "undefined"。
- fromIndex(可选):开始查找的位置,如果 < 0 则设为 0,如果 >= str.length 则返回 -1。
返回值:指定字符串第一次出现的位置,如果没找到则返回 -1。
示例:
const str = "Hello, welcome to leophen blog.";
console.log(str.indexOf("e")); // 1
console.log(str.indexOf("E")); // -1
console.log(str.indexOf("e", -1)); // 1
console.log(str.indexOf("e", 1)); // 1
console.log(str.indexOf("e", 2)); // 8
const len = str.length;
console.log(str.indexOf("e", len)); // -1
console.log(str.indexOf()); // -1 这里 str 中找不到 "undefined" 这个值
console.log('undefined'.indexOf()) // 0 这里"undefined" 在位置 0 处被找到
4、lastIndexOf
str.lastIndexOf(searchValue[, fromIndex])
功能:返回指定值在字符串中最后出现的位置。
参数:
- searchValue(必须):被查找的字符串值,如果省略则默认为 "undefined"。
- fromIndex(可选):开始查找的位置,如果 < 0 则设为 0,如果 >= str.length 则返回 -1。
返回值:指定字符串最后一次出现的位置,如果没找到则返回 -1。
示例:
const str = "Hello, welcome to leophen blog.";
console.log(str.lastIndexOf("e")); // 23
console.log(str.lastIndexOf("E")); // -1
console.log(str.lastIndexOf("e", -1)); // -1
console.log(str.lastIndexOf("e", 23)); // 23
console.log(str.lastIndexOf("e", 22)); // 19
console.log(str.lastIndexOf()); // -1 这里 str 中找不到 "undefined" 这个值
console.log('undefined'.lastIndexOf()) // 0 这里"undefined" 在位置 0 处被找到
5、startsWith
str.startsWith(searchString[, startIndex])
功能:判断是否以指定字符串开头。
参数:
- searchString(必须):要搜索的子字符串。
- startIndex(可选):查找的开始位置,默认值为 0。
返回值:true / false。
示例:
const str = "Hello, welcome to leophen blog.";
console.log(str.startsWith("Hello")); // true
6、endsWith
str.endsWith(searchString[, length])
功能:判断是否以指定字符串结尾。
参数:
- searchString(必须):要搜索的子字符串。
- length(可选):设置字符串的长度。默认 str.length。
返回值:true / false。
示例:
const str = "Hello, welcome to leophen blog.";
console.log(str.endsWith("og.")); // true
console.log(str.endsWith("og.", str.length-1)); // false
7、padStart
str.padStart(targetLength [, padString])
功能:用一个字符串从首位填充当前字符串。
参数:
- targetLength(必须):当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
- padString(可选):填充字符串。
返回值:在原字符串开头填充指定的填充字符串直到目标长度所形成的新字符串。
示例:
'abc'.padStart(10); // " abc"
'abc'.padStart(10, "foo"); // "foofoofabc"
'abc'.padStart(6, "123465");// "123abc"
'abc'.padStart(8, "0"); // "00000abc"
'abc'.padStart(1); // "abc"
8、padEnd
str.padEnd(targetLength [, padString])
功能:用一个字符串从末尾填充当前字符串。
参数:
- targetLength(必须):当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
- padString(可选):填充字符串。
返回值:在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。
示例:
'abc'.padEnd(10); // "abc "
'abc'.padEnd(10, "foo"); // "abcfoofoof"
'abc'.padEnd(6, "123456"); // "abc123"
'abc'.padEnd(1); // "abc"
9、includes
str.includes(searchString[, startIndex])
功能:判断字符串是否包含指定子字符串。
参数:
searchString(必须):要搜索的子字符串。 length(可选):查找的开始位置,默认值为 0。
返回值:true / false。
示例:
const str = "Hello, welcome to leophen blog.";
console.log(str.includes("leophen")); // true
10、search
str.search(searchvalue)
功能:查找匹配值的起始位置。
参数:searchvalue(必须):要查找的字符串或正则表达式(忽略全局匹配 g)。
返回值:所匹配到的第一个字符串的起始位置。
示例:
const str = 'Hello, welcome to Leophen Blog.';
console.log(str.search('welco', 'x')); // 7
console.log(str.search(/welco/, 'x')); // 7
console.log(str.search(/welco/g, 'x')); // 7
console.log(str.search('welcx', 'x')); // -1
console.log(str); // Hello, welcome to Leophen Blog.
11、match
str.match(regexp)
功能:根据正则表达式返回匹配到的字符串。
参数:regexp(必须):指定的正则表达式对象。
返回值:
- regexp 使用 g,返回存放匹配结果的数组。
- regexp 未使用 g,仅返回第一个匹配到的捕获组(Array)
示例:
const str = 'Hello, welcome to Leophen Blog.';
const regex1 = /[A-Z]/;
console.log(str.match(regex1));
// ['H', index: 0, input: 'Hello, welcome to Leophen Blog.', groups: undefined]
const regex2 = /[A-Z]/g;
console.log(str.match(regex2)); // ['H', 'L', 'B']
12、replace 和 replaceAll
12-1、replace
str.replace(searchvalue, newvalue)
功能:替换匹配的内容。
参数:
- searchvalue(必须):如果为被替换的字符串,则替换第一个匹配项;如果为正则表达式,则替换正则表达式匹配到的内容。
- newvalue(必须):替换文本。
返回值:替换后的新字符串。
示例:
const str = 'Hello, welcome to Leophen Blog.';
console.log(str.replace('o', 'x')); // Hellx, welcome to Leophen Blog.
console.log(str.replace(/o/, 'x')); // Hellx, welcome to Leophen Blog.
console.log(str.replace(/o/g, 'x')); // Hellx, welcxme tx Lexphen Blxg.
console.log(str); // Hello, welcome to Leophen Blog.
12-2、replaceAll
str.replaceAll(searchvalue, newvalue)
用法与 replace 相同,但只进行全局匹配。
示例:
const str = 'Hello, welcome to Leophen Blog.';
console.log(str.replaceAll('o', 'x')); // Hellx, welcxme tx Lexphen Blxg.
console.log(str.replaceAll(/o/, 'x')); // 报错
console.log(str.replaceAll(/o/g, 'x')); // Hellx, welcxme tx Lexphen Blxg.
console.log(str); // Hello, welcome to Leophen Blog.
13、slice
str.slice(beginIndex[, endIndex])
功能:返回提取后的新字符串。
参数:
- beginIndex(必须):提取的起始位置。
- endIndex(可选):在该索引前结束提取位置,如果省略则提取到末尾。
返回值:返回提取出来的新字符串。
示例:
var str = 'Hi, visitor';
console.log(str.slice(1)); // i, visitor
console.log(str.slice(1, 2)); // i
console.log(str.slice(-3)); // tor
console.log(str); // Hi, visitor
14、substring
str.substring(indexStart[, indexEnd])
功能:截取两个指定下标间的字符。
参数:
- indexStart(必须):截取的起始位置(substring 不接受负数)。
- indexEnd(可选):在该索引前结束提取位置,如果省略则提取到末尾。
返回值:返回截取出来的新字符串。
示例:
var str = 'Hi, visitor';
console.log(str.substring(1)); // i, visitor
console.log(str.substring(0, 2)); // Hi
console.log(str.substring(1, 1)); // ''
console.log(str.substring(2, 0)); // Hi
console.log(str.substring(-3)); // Hi, visitor
console.log(str); // Hi, visitor
如果 indexStart 比 indexEnd 大,会自动交换这两个参数再执行。
15、concat
str.concat(str2, [, ...strN])
功能:用于连接两个或多个字符串。
参数:str2 [, ...strN](必须):需要连接到 str 的字符串。
返回值:连接后生成的新字符串。
示例:
var str1 = "Hello ";
var str2 = "world!";
console.log(str1.concat(str2)); // Hello world!
console.log(str1); // Hello
用 +
运算符来进行字符串的连接会更简便。
16、toLowerCase 和 toUpperCase
16-1、toLowerCase
str.toLowerCase()
功能:把字符串转换为小写。
参数:无
返回值:转小写后的新字符串。
示例:
var s = 'Hello World';
console.log(s.toLowerCase()); // hello world
16-2、toUpperCase
str.toUpperCase()
用法与 toLowerCase 相同,但转大写。
示例:
var s = 'Hello World';
console.log(s.toUpperCase()); // HELLO WORLD
注意:在某些区域环境中,比如土耳其语,它的大小写映射并不遵循在 Unicode 中默认的大小写映射,因此会有不同的结果。此时可以使用 toLocaleLowerCase()
和 toLocaleUpperCase()
返回根据本地主机语言环境转换大小写后的新字符串。
17、split
str.split([separator[, limit]])
功能:把字符串分割为字符串数组,是 Array.join( ) 的逆操作。
参数:
- separator(必须):字符串或正则表达式,从该参数指定的地方分割原字符串。
- howmany(可选):指定返回数组的最大长度。
返回值:分割后的字符串数组。
示例:
var str = 'Hi, visitor';
console.log(str.split('')); // ['H', 'i', ',', ' ', 'v', 'i', 's', 'i', 't', 'o', 'r']
console.log(str.split(' ')); // ['Hi,', 'visitor']
console.log(str.split(' ', 1)); // ['Hi,']
console.log(str); // Hi, visitor
18、trim
str.trim()
功能:去除字符串两边的空白。
参数:无
返回值:两端去掉空白的新字符串。
示例:
var str = ' Hi, visitor ';
console.log(str.trim('')); // 'Hi, visitor'
console.log(str.trimStart('')); // 'Hi, visitor '
console.log(str.trimEnd('')); // ' Hi, visitor'