JavaScript字符串的方法

字符串对象原型上的属性

我们可以看到字符串的原型上有着非常多的属性和方法,下面来一个一个看其作用和用法。

Sting对象方法

1. charAt()

charAt(index) 方法可返回指定位置的字符。
第一个字符位置为 0, 第二个字符位置为 1,以此类推。

// 返回字符串的最后一个字符
var str = "HELLO WORLD";
var n = str.charAt(str.length-1);  // D

2. charCodeAt()

charCodeAt(index) 方法可返回指定位置的字符的 Unicode 编码。
字符串中第一个字符的位置为 0, 第二个字符位置为 1,以此类推。如果在索引处没找到元素则返回 NaN。

UTF-16 编码单元匹配能用一个 UTF-16 编码单元表示的 Unicode 码点。如果 Unicode 码点不能用一个 UTF-16 编码单元表示(因为它的值大于0xFFFF),则所返回的编码单元会是这个码点代理对的第一个编码单元) 。如果你想要整个码点的值,使用 codePointAt()。

3. codePointAt()

codePointAt() 方法可返回指定位置的字符的 Unicode 编码。如果在索引处没找到元素则返回 undefined。
codePointAt与charCodeAt的区别

4. concat()

concat 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。 concat 方法并不影响原字符串。如果参数不是字符串类型,它们在连接之前将会被转换成字符串。

let hello = 'Hello, '
console.log(hello.concat('Kevin', '. Have a nice day.'))
// Hello, Kevin. Have a nice day.

出于性能考虑,强烈建议赋值操作符(+, +=)代替 concat 方法。

5. constructor()

是String字符串的构造函数,返回一个新的字符串实例。

6. endswith(searchString[, length])

endsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 true 或 false。这个方法是大小写敏感的。
参数:

  • searchString
    要搜索的子字符串。
  • length 可选
    作为 str 的长度。搜索str前面length长度部分的字符串内容。默认值为 str.length。

7. includes(searchString[, position])

includes()方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false。区分大小写。
参数:

  • searchString
    要在此字符串中搜索的字符串。
  • position (可选)
    从当前字符串的哪个索引位置开始搜寻子字符串,默认值为 0。

8. indexOf(searchValue [, fromIndex])

indexOf()方法返回调用它的 String 对象中第一次出现的指定值的索引,从 fromIndex 处进行搜索。如果未找到该值,则返回 -1。
参数:

  • searchValue
    要被查找的字符串值。
    如果没有提供确切地提供字符串,会被强制设置为 "undefined"
    例如'undefined'.indexOf()将会返回0。
  • fromIndex (可选)
    数字表示开始查找的位置。可以是任意整数,默认值为 0。
    如果 fromIndex 的值小于 0,或者大于 str.length ,那么查找分别从 0 和str.length 开始。

9. lastIndexOf(searchValue[, fromIndex])

lastIndexOf()方法返回调用String 对象的指定值最后一次出现的索引,在一个字符串中的指定位置 fromIndex从后向前搜索。如果没找到这个特定值则返回-1 。
参数:

  • searchValue
    一个字符串,表示被查找的值。如果searchValue是空字符串,则返回fromIndex。
  • fromIndex(可选)
    待匹配字符串searchValue的开头一位字符从 str的第fromIndex位开始向左回向查找。如果 fromIndex >= str.length ,则会搜索整个字符串。如果 fromIndex < 0 ,则等同于 fromIndex == 0。

10. localeCompare(compareString[, locales[, options]])

返回一个数字表示是否 引用字符串 在排序中位于 比较字符串 的前面,后面,或者二者相同。

  • 当 引用字符串 在 比较字符串 前面时返回 -1
  • 当 引用字符串 在 比较字符串 后面时返回 1
  • 相同位置时返回 0

11. match(regexp)

检索返回一个字符串匹配正则表达式的结果。
如果使用g标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。
如果未使用g标志,则仅返回第一个完整匹配及其相关的捕获组(Array)。 在这种情况下,返回的项目将具有如下所述的其他属性。

  • groups: 一个捕获组数组 或undefined(如果没有定义命名捕获组)。
  • index: 匹配的结果的开始位置
  • input: 搜索的字符串.

如果传入一个非正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个RegExp 。如果你没有给出任何参数并直接使用match() 方法 ,你将会得到一 个包含空字符串的 Array:""。

12. matchAll(regexp)

返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器。
入参RegExp必须是设置了全局模式g的形式,否则会抛出异常TypeError。

13. normalize([form])

会按照指定的一种 Unicode 正规形式将当前字符串正规化。(如果该值不是字符串,则首先将其转换为一个字符串)。
参数:

  • form: 四种 Unicode 正规形式(Unicode Normalization Form)"NFC"、"NFD"、"NFKC",或 "NFKD" 其中的一个, 默认值为 "NFC"。

14. padEnd(targetLength [, padString])

会用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。从当前字符串的末尾(右侧)开始填充。
参数:

  • targetLength: 当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
  • padString (可选):填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。此参数的缺省值为 " "。

15. padStart(targetLength [, padString])

用另一个字符串填充当前字符串(如果需要的话,会重复多次),以便产生的字符串达到给定的长度。从当前字符串的左侧开始填充。
参数:

  • targetLength
    当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
  • padString (可选)
    填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。此参数的默认值为 " "。

16. repeat(count)

构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。count值要介于 0+Infinity之间的整数。

"abc".repeat(0)      // ""
"abc".repeat(1)      // "abc"
"abc".repeat(2)      // "abcabc"

17. replace(regexp|substr, newSubStr|function)

该方法并不改变调用它的字符串本身,而只是返回一个新的替换后的字符串。在进行全局的搜索替换时,正则表达式需包含 g 标志。
参数:

  • regexp (pattern)
    一个RegExp对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉。
  • substr (pattern)
    一个将被 newSubStr 替换的 字符串。其被视为一整个字符串,而不是一个正则表达式。仅第一个匹配项会被替换。
  • newSubStr (replacement)
    用于替换掉第一个参数在原字符串中的匹配部分的字符串。该字符串中可以内插一些特殊的变量名。
  • function (replacement)
    一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。

18. replaceAll(regexp|substr, newSubstr|function)

方法返回一个新字符串,新字符串所有满足 pattern 的部分都已被replacement 替换。pattern可以是一个字符串或一个 RegExpreplacement可以是一个字符串或一个在每次匹配被调用的函数。
当使用一个 regex时,您必须设置全局(“ g”)标志,

19. search(regexp)

执行正则表达式和 String 对象之间的一个搜索匹配。
如果匹配成功,则返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1。

20. slice(beginIndex[, endIndex])

提取某个字符串的一部分,并返回一个新的字符串,且不会改动原字符串。

21. split([separator[, limit]])

使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。找到分隔符后,会将其从字符串中删除。
参数:

  • separator: 指定表示每个拆分应发生的点的字符串。separator 可以是一个字符串或正则表达式。
  • limit: 一个整数,限定返回的分割片段数量。超出限制数量的部分会被舍弃。

22. startsWith()

用来判断当前字符串是否以另外一个给定的子字符串开头,并根据判断结果返回 true 或 false。
参数:

  • searchString 要搜索的子字符串。
  • position (可选) 在 str 中搜索 searchString 的开始位置,默认值为 0。

23. substr(start[, length]) (不推荐使用)

返回一个字符串中从指定位置开始到指定字符数的字符。
如果 length 为 0 或负值,则 substr 返回一个空字符串。如果忽略 length,则 substr 提取字符,直到字符串末尾。

24. substring(indexStart[, indexEnd])

返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集。

25. toLocaleLowerCase([locale, locale, ...])

根据任何指定区域语言环境设置的大小写映射,返回调用字符串被转换为小写的格式。
参数 locale 指明要转换成小写格式的特定语言区域。默认的locale是主机环境的当前区域(locale)设置。

'ALPHABET'.toLocaleLowerCase(); // 'alphabet'

'\u0130'.toLocaleLowerCase('tr') === 'i';    // true
'\u0130'.toLocaleLowerCase('en-US') === 'i'; // false

let locales = ['tr', 'TR', 'tr-TR', 'tr-u-co-search', 'tr-x-turkish'];
'\u0130'.toLocaleLowerCase(locales) === 'i'; // true

26. toLocaleUpperCase([locale, locale, ...])

根据任何指定区域语言环境设置的大小写映射,返回调用字符串被转换为大写的格式。
参数 locale 指明要转换成大写格式的特定语言区域。默认的locale是主机环境的当前区域(locale)设置。

27. toLowerCase()

将调用该方法的字符串值转为小写形式,并返回。不会影响字符串本身的值。

28. toUpperCase()

将调用该方法的字符串转为大写形式并返回。不会影响字符串本身的值。

29. toString()

返回指定对象的字符串形式。并不影响原字符串本身。

30. trim()

会从一个字符串的两端删除空白字符。

31. trimRight() / trimEnd()

从一个字符串的末端移除空白字符。

32. trimStart() / trimLeft()

从字符串的开头删除空格。

33. valueOf()

返回 String对象的原始值。

var x = new String('Hello world');
console.log(x.valueOf());  // "Hello world"

String HTML 包装方法 (现都已废弃,不推荐使用了。)

1. anchor() (已废弃)

anchor() 方法用于创建 HTML 锚。
该方法返回加了 <a> 标签的字符串, 一个参数,用于指定a标签的name属性。如下所示:

> "叶落疑秋".anchor("name");
< "<a name="name">叶落疑秋</a>"

2. big()(已废弃)

big() 方法用于把字符串显示为大号字体。
该方法返回加了 <big> 标签的字符串, 如下所示:

> "yeluoyiqiu".big()
< "<big>yeluoyiqiu</big>"

已废弃
该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。

3. blink()(已废弃)

blink() 方法用于显示闪动的字符串。
该方法返回加了 <blink> 标签的字符串, 如下所示:

> "叶落疑秋".anchor("name");
< <blink>叶落疑秋</blink>

已废弃
该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。

4. bold()(已废弃)

bold() 方法用于把字符串显示为粗体。
该方法返回加了 <b> 标签的字符串, 如下所示:

> "叶落疑秋".bold("name");
< <b>叶落疑秋</b>

4. fixed() (已废弃)

fixed() 方法将一个字符串包裹在<tt></tt>标签中,比如: "<tt>str</tt>".

5. fontcolor(color) (已废弃)

fontcolor()方法创建一个<font>元素让字符串被显示成指定的字体颜色。

6. fontsize(size) (已废弃)

fontsize()方法创建一个<font>元素让字符串被显示成指定的字体大小。

5. italics() (已废弃)

italics() 方法用于把字符串显示为斜体。
该方法返回加了 <i> 标签的字符串, 如下所示:
<i>string</i>

6. link(url) (已废弃)

link() 方法用于把字符串显示为超链接。
该方法返回加了 <a> 标签的字符串, 如下所示:
<a href="url">string</a>

7. small() (已废弃)

用于把字符串显示为小号字。
该方法返回加了 <small> 标签的字符串, 如下所示:
<small>string</small>

8. strike() (已废弃)

用于显示加删除线的字符串。
该方法返回加了 <strike> 标签的字符串, 如下所示:
<strike>string</strike>

9. sub()(已废弃)

用于把字符串显示为下标。
该方法返回加入 <sub> 标签的字符串,如下所示:
<sub>string</sub>

10. sup()(已废弃)

用于把字符串显示为上标。
该方法返回加入 the <sup> 标签的字符串, 如下:
<sup>string</sup>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,013评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,205评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,370评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,168评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,153评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,954评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,271评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,916评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,382评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,877评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,989评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,624评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,209评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,199评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,418评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,401评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,700评论 2 345

推荐阅读更多精彩内容