JavaScript常用的字符串处理方法

1,712 阅读4分钟

介绍


本文主要介绍JS的字符串函数, 如下图所示。另外,字符串还有三个性质constructor、length和prototype。

1. charAt和charCodeAt

charAt(x): 返回字符串中x位置的字符,下标从 0 开始。

charCodeAt(x): 返回字符串中x位置处字符的unicode值。

2. fromCharcode

fromCharcode(c1,c2): 转换一组Unicode值转换为字符。

console.log(String.fromCharCode(85,67,108,111,117,100))
//output: UCloud

3. concat

concat(v1,v2..) 转换一组Unicode值转换为字符。

4. indexOf和lastIndexOf

indexOf(substr, [start]): indexOf方法搜索并(如果找到)返回字符串中搜索到的字符或子字符串的索引。如果没有找到,则返回-1。Start是一个可选参数,指定字符串中开始搜索的位置,默认值为0。

lastIndexOf(substr, [start]): lastIndexOf() 方法返回指定文本在字符串中最后一次出现的索引, 如果未找到,则返回-1。“Start”是一个可选参数,指定字符串中开始搜索的位置, 默认值为string.length-1。

5. match、replace和search

match(regexp): 根据正则表达式在字符串中搜索匹配项。如果没有找到匹配项,则返回一个信息数组或null。

var intRegex = /[0-9 -()+]+$/;
var myNumber = '999';
var isInt = myNumber.match(intRegex);
console.log(isInt);
//output: 999
 
var myString = '999 JS Coders';
var isInt = myString.match(intRegex);
console.log(isInt);
//output: null

replace(regexp/substr, replacetext): 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

var myString = 'erina JavaScript Coders';
console.log(myString.replace(/JavaScript/i, "java"));
//output: erina java Coders
 
var myString = 'erina JavaScript Coders';
console.log(myString.replace(new RegExp( "erina", "gi" ), "The"));
//output: The JavaScript Coders
console.log(myString.replace(new RegExp(/erina/gi ), "bingbing"));
//output: bingbing JavaScript Coders

search(regexp): 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,如果找到,返回与 regexp 相匹配的子串的起始位置,否则返回 -1。

var intRegex = /[0-9 -()+]+$/;
 
var myNumber = '999';
var isInt = myNumber.search(intRegex);
console.log(isInt);
//output: 0

6. slice、split、substr和substring

方法 描述 返回值
slice(start, end) start(必需) -起始位置;end(可选)-结束位置,若未指定,则默认到末尾所有元素 返回 [start,end)之间的元素
substring(start, end) start(必需) -起始位置;end(可选)-结束位置,若未指定,则默认到末尾所有元素 返回 [start,end)之间的元素
substr(start, length) start(必需)-起始位置;length(可选)-所截取的元素的个数,若未指定,则默认到末尾 返回[start, start+length)之间的元素

当传的参数都为正数的时候,substring和substr没有区别。当参数为负数时,三个函数的行为不尽相同。
slice() - 将传入的负参数与字符串长度相加;
substring() - 把所有的负值置为0;
substr() - 将负的第一个参数与字符串长度相加,负的第二个参数置为0。

参数为正数

var str = 'hello world';
console.log(str.slice(3)); // lo world
console.log(str.substring(3));// lo world
console.log(str.substr(3));// lo world

console.log(str.slice(3, 7)); // lo w
console.log(str.substring(3, 7)); // lo w
console.log(str.substr(3, 7));//lo worl

参数为负数

var str = 'hello world';
console.log(str.slice(-3)); // rld
console.log(str.substring(-3));// hello world
console.log(str.substr(-3));// rld

console.log(str.slice(3, -4)); // lo w
console.log(str.substring(3, -4)); // hel
console.log(str.substr(3, -4));// ""(空字符串)

以上实例的计算过程如下
slice(-3) => slice(8)
substring(-3) => substring(0)
substr(-3) => substr(8)
slice(3, -4) => slice(3, 7)
substring(3, -4) => substring(3, 0) =>substring(0, 3)
substr(3, -4) => substr(3, 0)

7. toLowerCase、toLocaleLowerCase、toUpperCase和toLocaleUpperCase

toLowerCase()和toUpperCase()是两个经典的方法,分别把字符串转为小写和大写。 而toLocaleLowerCase()和toLocaleUpperCase()方法则是针对特定地区的实现。
对有些地区来说,针对地区的方法与其通用方法得到的结果相同,但少数语言(如土耳其语言)会为Unicode大小写转换应用特殊的规则,这时候就必须使用针对地区的方法来保证实现正确的转换。

8. includes

includes(): 方法用于检查字符串是否包含指定的字符串或字符。

var mystring = "Hello, welcome to shanghai";
var n = mystring.includes("shanghai");
//output: True

9. startsWith和endsWith

startsWith()和endsWith()函数分别检查字符串是否以指定的字符串或字符开始或者结束。

var mystr = "List of javascript functions";
var isEnd = mystr.endsWith("functions");
//output: True
var isStart = mystr.startsWith("List");
// output: True

10. repeat

repeat() : 构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。

var string = "Welcome to Qindao";
string.repeat(2);
//output: Welcome to Qindao Welcome to Qindao

11. toString和valueOf

valueOf() : 方法返回一个String对象的原始值(primitive value),该值等同于String.prototype.toString()。
toString()和valueOf()的主要不同点在于,toString()返回的是字符串,而valueOf()返回的是原对象

12. trim

trim(): 方法会从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR)

var str = "     Hello Erina!     ";
str.trim();
output: Hello Erina!