JavaScript字符串方法


字符串的方法和属性

原始值, 像 "John Doe", 不能拥有属性或方法 (因为它们不是对象).

但对于JavaScript,方法和属性也能应用于原始值,因为执行方法和属性时,JavaScript将原始值作为对象对待。


字符串长度

length属性返回字符串的长度:

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;

让我试试


在字符串中查找字符串

The indexOf() 方法返回字符串中指定文本第一次出现的位置的索引:

var str = "Please locate where 'locate' occurs!";
var pos = str.indexOf("locate");

让我试试

lastIndexOf() 方法返回字符串中指定文本的最后一次出现的索引:

var str = "Please locate where 'locate' occurs!";
var pos = str.lastIndexOf("locate");

让我试试

indexOf()和lastIndexOf() 方法都返回-1,如果文本没有找到.

JavaScript的位置从零计数。0是一个字符串中的第一个位置,1个是第二个,2个是第三个 ...

这两种方法都接受第二个参数作为搜索的起始位置.


在字符串中搜索字符串

search() 方法搜索指定值的字符串并返回匹配的位置:

var str = "Please locate where 'locate' occurs!";
var pos = str.search("locate");

让我试试


你注意到没有?

两个方法, indexOf() 和 search(), 是等价的.

它们接受相同的参数,并且返回相同的值.

两个方法是等价的,但是search()方法搜索值更强大。

关于正则表达式一章中,您将了解更多关于强搜索值的知识


提取部分字符串

有3种方法提取字符串的一部分:

  • slice(start, end)
  • substring(start, end)
  • substr(start, length)

slice() 方法

slice() 提取字符串的一部分,并在一个新的字符串中返回提取的部分

该方法带2个参数:起始索引(位置)和结束索引(位置)。.

此示例将从位置7到13,提取字符串的一部分:

var str = "Apple, Banana, Kiwi";
var res = str.slice(7, 13);

让我试试

如果参数为负数,则从字符串的末端计算该位置.

这个实例从位置-12到-6提取字符串的一部分:

var str = "Apple, Banana, Kiwi";
var res = str.slice(-12, -6);

让我试试

如果省略第二个参数,则该方法将提取字符串的剩余部分:

var res = str.slice(7);

让我试试

或者,从末端计数:

var res = str.slice(-12);

让我试试

负数位置不能在IE8和更早的版本工作.


substring() 方法

substring()和slice()相似.

不同的是substring()不能接受负索引.

var str = "Apple, Banana, Kiwi";
var res = str.substring(7, 13);

让我试试

如果省略第二个参数, substring() 提取剩余的字符串.


substr() 方法

substr() 和 slice()相似.

所不同的是,第二个参数指定提取部分的长度.

var str = "Apple, Banana, Kiwi";
var res = str.substr(7, 6);

让我试试

如果第一个参数为负数,则该位置从字符串的末端计数.

第二个参数不能为负值,因为它定义了长度.

如果省略第二个参数 substr() 提取字符串的剩余部分。


替换字符串内容

replace() 方法用指定值替换另一个值:

var str = document.getElementById("demo").innerHTML;
var txt = str.replace("编程字典","www.codingdict.com");

让我试试

replace() 方法还可以将正则表达式作为搜索值.

默认情况下,该replace()函数代替只有第一个匹配。若要替换所有匹配,请使用带有G标志的正则表达式(全局匹配):

var str = document.getElementById("demo").innerHTML;
var txt = str.replace(/编程字典/g,"www.codingdict.com");

让我试试

replace()方法不会改变被调用的字符串。它返回一个新的字符串


大小写转换

使用toUpperCase(),可以将字符串被转换为大写 :

var text1 = "Hello World!";       // String
var text2 = text1.toUpperCase();  // text2 is text1 converted to upper

让我试试

可以使用toLowerCase()方法,将字符串转换为小写:

var text1 = "Hello World!";       // String
var text2 = text1.toLowerCase();  // text2 is text1 converted to lower

让我试试


concat() 方法

concat() 连接两个或多个字符串:

var text1 = "Hello";
var text2 = "World";
text3 = text1.concat(" ", text2);

让我试试

concat() 方法可以代替加号运算符. 这两行做法是相同的:

var text = "Hello" + " " + "World!";
var text = "Hello".concat(" ", "World!");

所有字符串方法返回新字符串。他们不修改原来的字符串。也就是说:字符串是不可变的:字符串不能更改,只能替换.


提取字符串中的字符

提取字符串字符有2种安全的方法:

  • charAt(position)
  • charCodeAt(position)

charAt() 方法

charAt() 方法返回字符串中指定索引(位置)的字符:

var str = "HELLO WORLD";
str.charAt(0);            // returns H

让我试试


charCodeAt() 方法

charCodeAt() 方法返回字符串中指定索引处的字符的unicode值:

var str = "HELLO WORLD";

str.charCodeAt(0);         // returns 72

让我试试


将字符串作为数组访问是不安全的

可能见过这样的代码,将字符串作为数组访问:

var str = "HELLO WORLD";

str[0];                   // returns H

这是不安全和不可预测的:

  • 它不适用于所有浏览器 (不包括IE5, IE6, IE7)
  • 它使字符串看起来像数组 (但事实并非如此。)
  • str[0] = "H" 不会报错 (但是它不工作)

如果要将字符串作为数组读取,首先将其转换为数组.


将字符串转换为数组

使用split()方法,可以将字符串转换为数组:

var txt = "a,b,c,d,e";   // String
txt.split(",");          // Split on commas
txt.split(" ");          // Split on spaces
txt.split("|");          // Split on pipe

让我试试

如果省略了分隔符, 返回的数组将包含索引中的整个字符串.

如果分隔符是 "", 返回的数组将是单个字符作为数组:

var txt = "Hello";       // String
txt.split("");           // Split in characters

让我试试


完整的字符串参考

完整的字符串参考, 请访问 完整的字符串参考.

参考包含所有字符串属性和方法的说明和示例.