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 替换

    这个应用场景比较多


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

    查看所有标签

    猜你喜欢:

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

    MATLAB在数学建模中的应用

    MATLAB在数学建模中的应用

    卓金武 编 / 北京航空航天大学 / 2011-4 / 34.80元

    《MATLAB在数学建模中的应用》从数学建模的角度介绍了MATLAB的应用。《MATLAB在数学建模中的应用》的4位作者均具有实际的数学建模参赛经历和竞赛指导经验。书中内容完全是根据数学建模竞赛的需要而编排的,涵盖了绝大部分数学建模问题的MATLAB求解方法。 《MATLAB在数学建模中的应用》内容分上下两篇。上篇介绍数学建模中常规方法MATLAB的实现,包括MATLAB交互、数据建模、程序......一起来看看 《MATLAB在数学建模中的应用》 这本书的介绍吧!

    URL 编码/解码
    URL 编码/解码

    URL 编码/解码

    UNIX 时间戳转换
    UNIX 时间戳转换

    UNIX 时间戳转换

    RGB HSV 转换
    RGB HSV 转换

    RGB HSV 互转工具