JS不再百度系列-字符串的基本操作
栏目: JavaScript · 发布时间: 5年前
内容简介:这篇记录的是我常用的字符串操作。本文全部内容来自注意:
这篇记录的是我常用的字符串操作。本文全部内容来自 MDN。 完整的可以看这个
注意:
- 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
时返回 0
, 0 < fromIndex <= str.length
时返回 fromIndex
, fromIndex > 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
:[""] 。
返回值:
Array
),但不会返回捕获组,或者未匹配返回 null
。 Array
) ( 关联数组 )
。 在这种情况下,返回的项目将具有如下所述的 附加属性
,或者未匹配返回 null
。 附加属性
如上所述,匹配的结果包含如下所述的附加特性。
-
groups
: 一个捕获组数组 或undefined
(如果没有定义命名捕获组)。 -
index
: 匹配的结果的开始位置 -
input
: 搜索的字符串.
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
返回值:如果匹配成功,则 search()
返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1
感觉像是支持正则的indexOf,不阐述更多
replace 替换
这个应用场景比较多
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
MATLAB在数学建模中的应用
卓金武 编 / 北京航空航天大学 / 2011-4 / 34.80元
《MATLAB在数学建模中的应用》从数学建模的角度介绍了MATLAB的应用。《MATLAB在数学建模中的应用》的4位作者均具有实际的数学建模参赛经历和竞赛指导经验。书中内容完全是根据数学建模竞赛的需要而编排的,涵盖了绝大部分数学建模问题的MATLAB求解方法。 《MATLAB在数学建模中的应用》内容分上下两篇。上篇介绍数学建模中常规方法MATLAB的实现,包括MATLAB交互、数据建模、程序......一起来看看 《MATLAB在数学建模中的应用》 这本书的介绍吧!