Javascript中字符串操作方法
-
拼接字符串concat()
concat()用于将一或多个字符串拼接起来,返回拼接得到的新的字符串。先来看一个例子:
var stringValue = "hello ";
var result = stringValue.concat("world");
console.log(result);
console.log(stringValue);
在这个例子中,通过stringValue调用concat()方法返回的结果是"hello world"——但stringValue的值则保持不变。实际上,concat()方法可以接受任意多个参数,也就是说可以通过它拼接任意多个字符串。再看一个例子:
var stringValue = "hello ";
var result = stringValue.concat("world","!");
console.log(result); //"hello world!"
console.log(stringValue); //"hello"
虽然concat()是专门用来拼接字符串的方法,但是实践中使用的更多的还是加号操作符(+)。而且,使用加号操作符在大多数情况下都比使用concat()方法要简单易行(特别是在拼接多个字符串的情况下)。
-
基于子字符串创建新字符串方法
ECMAScript还提供了三个基于子字符串创建新字符串的方法:slice()、substr()和substring()。这三个方法都会返回被操作字符串中的一个子字符串,而且也都接受一或两个参数。第一个参数指定子字符串的开始位置,第二个参数(在指定情况下)表示子字符串在哪里结束。具体来说,slice()和substring()的第二个参数指定的是子字符串最后一个字符后面的位置。而substr()的第二个参数指定的是返回字符个数。如果没有给这些方法传递第二个参数,则将字符串的长度作为结束位置。与concat()方法一样,slice()、substr()、和substring()也不会修改字符串本身的值——它们只是返回一个基本类型的字符串值,对原始字符串没有任何影响。请看下面的例子:
var stringValue = "hello world";
console.log(stringValue.slice(3)); //"lo world"
console.log(stringValue.substring(3)); //"lo world"
console.log(stringValue.substr(3)); //"lo world"
console.log(stringValue.slice(3,7)); //"lo w"
console.log(stringValue.substring(3,7)); //"lo w"
console.log(stringValue.substr(3,7)); //"lo worl"
在传递给这些方法的参数是负值的情况下,它们的行为就不尽相同了。其中,slice()方法会将传入的负值与字符串的长度相加,substr()将负的第一个参数加上字符串的长度,而将字符串的第二个参数转换为0。最后,substring()方法会把所有负值参数都转换为0。下面来看例子:
var stringValue = "hello world";
console.log(stringValue.slice(-3)); //"rld"
console.log(stringValue.substring(-3)); //"hello world"
console.log(stringValue.substr(-3)); //"rld"
console.log(stringValue.slice(3,-4)); //"lo w"
console.log(stringValue.substring(3,-4)); //"hel"
console.log(stringValue.substr(3,-4)); //"" (空字符串)
当第二个参数是负值时,这三个方法的行为各不相同。slice()方法会把第二个参数转换为7,这就相当于调用了slice(3,7),因此返回"lo w"。substring()方法会把第二个参数转换为0,使调用变成了substring(3,0),而由于这个方法会将较小的数作为开始位置,将较小的数作为结束位置,因此最终相当于调用了substring(0,3)。substr()也会将第二个参数转换为0,这也就意味着返回包含零个字符的字符串,也就是一个空字符串。
引自:《Javascript 高级程序设计 第3版》