怀英漫谈8 - JS的字符串和数

你好,这周想和你聊聊JS中的基本语法的另一个部分——字符串和数组的使用。这次我们先聊聊字符串和它的方法。

字符串是什么

字符串这个词你我都知道,如果猛然问被问起什么叫字符串,你我可能都不能立马反映过来。当然,这个原理你我其实都知道,只是我们平时更注重于用,忽略了定义而已。在JS中,所谓的字符串就是由单引号'',或者双引号""包裹的字符序列,比如var name='张三疯',亦或是var name="李小龙"。

字符串常用方法

我记得当初一开始接触到字符串的相关方法的时候,我是一脸的蒙圈,总感觉方法比较多,看着都累。后来遇到一些需求,写了些许的代码之后,才逐渐感到这些方法有他们存在的价值。把他们归归类,差不多是五个方面,查询、替换、截取、大小写转换、拼接。这其中用的比较多的要属于拼接方法。之所以说是拼接,是因为拼接时用的最多的不是方法str.concat(str1, str2, ...); 而是'+'号。

其它三个方法中,查询的方法我个人比较喜欢用str.indexOf(searchValue[,index]);因为这个方法既可以搜索单个字符,也可以搜索一个字符串,通用型比较高。在实际的开发中,一般会把这个indexOf这个方法封装成一个查询方法,用于查找字符串内是否有我们需要的字符。有时候还会更进一步,去查询这个字符是否是以某个字符为开头,或者以某个字符结尾的。字符串的搜索还有一种比indexOf更万能的方法,且其原理是通过正则表达式去匹配,在JS中有两个方法可以达到这个效果,一个是str.search(regexp); 还有一个是 str.match(regexp); 。search方法返回的是坐标,而match方法返回的是一个数组。因为我对正则表达式不是很熟悉,所以这两种方法用的比较少。

JS字串的替换方法只有一个str.replace(regexp|substr, newSubstr|function); 不过它很强大,尤其是和正则配合使用之后。在不使用正则之前,替换方法只能替换符合标注的第一个字符串,当使用了正则表达式并指定全局标志(g)之后,就可以替换所有符合要求的自字符串了。

JS字串中截取功能的实现方法还是挺多的,substring(beginIndex[,endIndex]), slice(beginSlice[,endSlice]), str.substr(beginIndex[,length]), str.split(separator)。这其中,对我而言,substring()用的比较多,它与substr()的区别在于第二个参数,前者的第二个参数代表了截取的位置,后者的第二个参数代表了截取的长度。slice()我用的不多,它与substring()的区别在于substring()的参数不能为负数,而slice()的是可以的,负数代表它从末尾开始的反向截取。

你可能会好奇,我为什么要把split()也算进来,它不因该单独成为一个分类么。我是这么考虑的,从中文意思上来说,将一个字符串通过其中的分隔符转换为数组,这也是截取功能的一种,只是它截取后的子类(数组的各个元素)能拼合成数组的完整的字符串而已。这个方法在一开始用ajax做数据传输的时候用的比较多,前后端约定好数组每一个位置的元素内容之后,前端就用split来切分数据了。这两年再开发的时候,更多的是用Json。它的优势是可以轻易地实现对象和字符串之间的互转。也就变相的理解为可以传递对象,使得数据开发时候的语义更加明确,便于开发,所以split用的也就越发地少了。

对了,最后一个方面是大小写替换,这个语义上清晰明了,就是两个方法,str.toLowerCase()和str.toUpperCase()。这两个方法我用的也不是很多。所以就不多说了。

今天咱们聊了字符串和它的5个方面的方法,希望能对你有所帮助,祝春祺。

清单

  1. 在JS中,所谓的字符串就是由单引号'',或者双引号""包裹的字符序列
  2. 字符串的常用方法可分为查询、替换、截取、大小写转换、拼接这五个方面。

原文发布于微信公众号 - 怀英的自我修炼(hydzwxl)

原文发表时间:2018-03-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

Python入门基础连载(2)数据结构

Python数据结构包括了列表(list),元组(tuple),字典(dict)和集合(set),这些也都可以称之为容器,下面Cooldog就和大家一起学习一下...

2017
来自专栏和蔼的张星的图像处理专栏

55. 比较字符串

比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母 样例 给出 A = "ABCD" B = "ACD",返回 tru...

1231
来自专栏Java Web

Java学习笔记(2)——数据类型

终于要写点干货了,其实思考了很久下面一篇文章要写什么,主要的纠结点在于,既想要分享那些精美的知识,又怕这些知识不太好嚼。后来想想还是对初学者不太好友算了..一...

2693
来自专栏一名合格java开发的自我修养

java或判断优化小技巧

写业务代码的时候,我们经常要做条件判断,有的时候条件判断的或判断长达20多个。reg.equals("1") || reg.equals("2") || reg...

611
来自专栏Coding迪斯尼

使用普拉特解析法解析复杂的算术表达式

1602
来自专栏程序员的知识天地

Python里面这些点,据说80%的新手都会一脸懵逼

Python虽然语法简单,通俗易懂,但是再简单它也是一门语言,就像一棵大树,总有一些树枝是弯弯绕绕的,让新手看完之后一脸懵逼,今天我们就来说说这几个点,反正我学...

753
来自专栏Crossin的编程教室

【Python 第52课】 元组

上一次pygame的课中有这样一行代码: x, y = pygame.mouse.get_pos() 这个函数返回的其实是一个“元组”,今天我们来讲讲这个东西。...

3377
来自专栏Brian

Scala Turtuial-基本语法

概述 Scala是将面向对象思想与函数式编程思想集一身的编程语言,特别是在大数据和流式处理方面的快速发展,基于Scala语言一些重要的开源框架随之发布,比如:S...

2724
来自专栏大数据钻研

让你分分钟学会 javascript 闭包

闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它。...

2744
来自专栏Golang语言社区

interface引发的事件真相

流动的水没有形状,漂流的风找不到踪迹,一切代码都了然于心,我们在写代码的时候,总是有一种思维定式陪伴左右,在对事物做判断的时候,往往这种思维定式会往正向或反向做...

3396

扫码关注云+社区

领取腾讯云代金券