JS不再百度系列-字符串的基本操作

栏目: JavaScript · 发布时间: 6年前

内容简介:这篇记录的是我常用的字符串操作。本文全部内容来自注意:

这篇记录的是我常用的字符串操作。本文全部内容来自 MDN。 完整的可以看这个

MDN JS String

注意:

  • js的所有字符串方法均不会修改原字符串

String.prototype和Array.prototype中都有的方法

concat

返回值:新的拼接好的字符串

eg:

a = "a"
a.concat([1,2])    //"a1,2"
a.concat(1,true,null, undefined)    //a1truenullundefined,各元素会先用String()处理转化成字符串复制代码

includes

语法:

str.includes(searchString[, position])

参数:

  • searchString:要在此字符串中搜索的 字符串(可以是字符串,不一定是单个字符。indexOf和lastIndexOf同) ,如果不是字符串,会先用String()转为字符串,此点和Array中的includes的表现不一样
  • position:可选。从当前字符串的哪个索引位置开始搜寻子字符串,默认值为0。不支持负数,若是负数则无意义,指定为负数等同于指定为0

eg:

a = ["1", "2", "3"]
a.includes(1)    //false
b = "123"
b.includes(1)    //true

a.includes("2", -1)    //false
a.includes("2", -2)    //true

b.includes("2", -1)    //true
b.includes("2", -2)    //true
b.includes("2", 1)    //true
b.includes("2", 2)    //false
复制代码

indexOf

用法基本和数组中的indexOf一样,支持两个参数。

第二个参数不支持负数,或者说当第二个参数是负数时,表现会比较复杂。但我个人认为这没有记忆的必要

如果 fromIndex < 0 则查找整个字符串( 如同传进了 0 )。如果 fromIndex >= str.length ,则该方法返回 -1。当被查找的字符串是一个空字符串, fromIndex <= 0 时返回 00 < fromIndex <= str.length 时返回 fromIndexfromIndex > str.length 时返回 str.length

lastIndexOf

第二个参数同样不支持负数。如果为负值,则被看作 0。如果 fromIndex > str.length ,则 fromIndex 被看作 str.length

总结:

个人觉得,使用String.prototype.includes/indexOf/lastIndexOf时,如果需要用到第二个参数,记得用正数表示就好,没必要使用负数,得不偿失

slice

语法和参数完全同Array,第二个参数同样支持负数

字符相关操作

charAt

定义:从一个字符串中返回指定位置的字符

返回值:一个字符

语法:

str.charAt(index = 0)

参数:

  • index:一个介于0 和字符串长度减1之间的整数。 (0~length-1),默认为0。如果超过length-1,返回空字符;

charCodeAt

定义:方法返回0到65535之间的整数,表示给定索引处的UTF-16代码单元 (在 Unicode 编码单元表示一个单一的 UTF-16 编码单元的情况下,UTF-16 编码单元匹配 Unicode 编码单元。但在——例如 Unicode 编码单元 > 0x10000 的这种——不能被一个 UTF-16 编码单元单独表示的情况下,只能匹配 Unicode 代理对的第一个编码单元)

以我的理解,UTF-16编码方式固定以两个字节表示一个字符,两个字节即上文说的UTF-16编码单元。charCodeAt返回表示指定字符UTF-16编码单元的整数。但总有超出两个字节表示的字符,譬如有些字符需要四个字节表示,这时charCodeAt就返回第一个编码单元,即四个字节中的前两个字节

具体建议阅读阮一峰老师的:ES6入门

语法:

str.charCodeAt(index)

参数:

  • index, 一个大于等于 0,小于字符串长度的 整数 。如果不是一个数值,则默认为 0

返回值:表示给定索引处(String中index索引处)字符的 UTF-16 代码单元值的 数字(Number) ;如果索引超出范围,则返回 NaN

codePointAt

定义:方法返回 一个 Unicode 编码点值的非负整数(可以识别大于双字节存储的字符)

返回值:表示Unicode编码点值的非负整数

截取操作

slice

参考上面

substr

先搬一下来自MDN的警告

警告: 尽管 String.prototype.substr(…) 没有严格被废弃 (as in "removed from the Web standards"), 但它被认作是遗留的函数并且可以的话应该避免使用。它并非JavaScript核心语言的一部分,未来将可能会被移除掉。如果可以的话,使用 substring() 替代它.

鉴于此,直接跳过至substring

substring

定义:返回一个字符串 在开始索引到结束索引之间的一个子集(新的字符串,包括开始索引不包括结束索引) , 或从开始索引直到 字符串的末尾(若省略第二个参数)的 一个子集

返回值:包含给定字符串的指定部分的新字符串

语法:

str.substring(indexStart[, indexEnd])复制代码

参数

  • indexStart。需要截取的第一个字符的索引,该字符作为返回的字符串的首字母。
  • indexEnd。可选。一个 0 到字符串长度之间的整数 (不支持负数 ,若是负数,返回空串 默认是str.length 。以该数字为索引的字符不包含在截取的字符串内。若是substr,该参数指定了要截取字符数

split 指定

支持正则的方法

match 检索字符串

定义:检索返回一个字符串匹配正则表达式的的结果

返回值:

语法: str.match(regexp)

参数:

  • regexp

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

返回值:

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

    如上所述,匹配的结果包含如下所述的附加特性。

    • groups : 一个捕获组数组 或 undefined (如果没有定义命名捕获组)。
    • index : 匹配的结果的开始位置
    • input : 搜索的字符串.
    一个 Array ,其内容取决于global( g )标志的存在与否,如果未找到匹配则为 null

    eg:

    a = "12311";
    a.match(/1/g);    //["1", "1", "1"],不会返回捕获组
    a.match(/8/g);
    
    a.match(/1/);    //["1", index: 0, input: "12311", groups: undefined]
    a.match(/8/);    //null
    
    复制代码

    总结一下返回值有三种情况:

    • null,未匹配到
    • 该字符串所有匹配正则表达式的结果组成的数组,可通过其得知字符串有多个个能匹配正则的子串,正则表达式有g标志的情况下
    • 具有附加属性的捕获组(一个关联数组)

    search 检索字符串

    定义:执行正则表达式和 String 对象之间的一个搜索匹配

    语法: str.search(regexp)

    参数:

    • regexp
    一个 正则表达式(regular expression) 对象。如果传入一个非正则表达式对象 obj ,则会使用 new RegExp(obj) 隐式地将其转换为正则表达式对象。

    返回值:如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1

    感觉像是支持正则的indexOf,不阐述更多

    replace 替换

    这个应用场景比较多


    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

    查看所有标签

    猜你喜欢:

    本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

    Design Accessible Web Sites

    Design Accessible Web Sites

    Jeremy Sydik / Pragmatic Bookshelf / 2007-11-05 / USD 34.95

    It's not a one-browser web anymore. You need to reach audiences that use cell phones, PDAs, game consoles, or other "alternative" browsers, as well as users with disabilities. Legal requirements for a......一起来看看 《Design Accessible Web Sites》 这本书的介绍吧!

    SHA 加密
    SHA 加密

    SHA 加密工具

    XML 在线格式化
    XML 在线格式化

    在线 XML 格式化压缩工具

    html转js在线工具
    html转js在线工具

    html转js在线工具