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

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

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

这篇记录的是我常用的字符串操作。本文全部内容来自 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 替换

    这个应用场景比较多


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

    查看所有标签

    猜你喜欢:

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

    互联网产品运营:产品经理的10堂精英课

    互联网产品运营:产品经理的10堂精英课

    丁华、聂嵘海、王晶 / 电子工业出版社 / 2017-5 / 59

    《互联网产品运营:产品经理的10堂精英课》共有10章,前9章分别从互联网产品运营的9个点入手,最后一章辅以案例,分析当下市场热门产品的运营模式。 第1章点明在运营产品之前需要经过缜密的策划,这样才能有明确的运营方向;第2章讲述产品运营的定位,有了准确的定位,运营才不会走偏;第3章描述用户运营,用户是一款产品的根本,没有用户,产品就是死的;第4章讲述内容运营的技巧,产品内容要怎么运营才能受到用......一起来看看 《互联网产品运营:产品经理的10堂精英课》 这本书的介绍吧!

    HTML 压缩/解压工具
    HTML 压缩/解压工具

    在线压缩/解压 HTML 代码

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

    在线 XML 格式化压缩工具

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

    html转js在线工具