专栏首页怀英的自我修炼怀英漫谈8 - JS的字符串和数

怀英漫谈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),作者:怀英

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java漫谈3

    上次我们说道Java中的Hello World(以下简称HW)是什么样子的,还写了一段HW的输出程序。不知道你是否会有疑问,难道在Java的环境中只要输入这一句...

    用户1335799
  • 怀英漫谈1-JS初体验

    你好,欢迎来到怀英漫谈,这次想与你聊聊初学JS的感受。 这次接触JS的时候并不是零基础,是没有系统性的对JS的认知,正好这次也借此机会,用碎片的时间将JS的知识...

    用户1335799
  • 《Spring实战》摘录 - 27

    Q: #17.3.3-1 | RabbitMQ连接工厂的作用是创建到RabbitMQ的连接

    用户1335799
  • Java基础系列(十四):方法调用

    如果在子类中定义了一个与父类签名相同的方法,那么子类中的这个方法就会覆盖父类中这个相同签名的方法。这里需要注意一点,在覆盖一个方法的时候,子类方法不能低于父类方...

    Vi的技术博客
  • 【C语言编程锦囊·连载49】如何进行字符串的比较?

    问题阐述 字符串的比较,就是看两个字符串哪个大,哪个小。比较的原则是对两个字符串进行逐个字符的比较。直到有不相等的字符为止。例: “abcd” “abxa” 这...

    企鹅号小编
  • C# 字符串首字符大写

    假如需要把字符串 “red” 转换为 “Red”,把 “red house” 转为 “Red house” 或者单词的第一个大写,下面就是我从网上看到的技术。

    林德熙
  • Objective-C 学习记录4

    1.创建字典的NSString可变字符串,和NSMutableString不可变字符串.都是objective的对象.

    叉叉敌
  • 打印println()方法的逻辑

    黑泽君
  • Tcl的字符串操作:其他字符串操作命令

    string命令提供了三种字符串裁剪方式:trim、trimleft和trimright。每种方式都需要两个参数,一个指定待裁剪的字符串,一个指定裁剪模式。默认...

    Lauren的FPGA
  • 分享两个提高效率的AndroidStudio小技巧

    这次分享两个 Android Studio 的小技巧,能够有效提高效率和减少犯错,尤其是在团队协作开发中。

    请叫我大苏

扫码关注云+社区

领取腾讯云代金券