Javascript中字符串相关常用的使用方法总结


Posted in Javascript onMarch 13, 2017

刚刚在看Javascript犀牛书,看到字符串这一节,平时工作接触到这方面的不多,想着整理下,以备不时只需。

JavaScript的内置功能之一就是字符串连接,如果用‘+'连接两个数字,表示两数相加。但是如果用于字符串,就表示第二个字符加在第一个字符之后。

var num=1+2;
console.log(num);
var msg='hello'+'world';
console.log(msg);

对于字符串来说,除了有length属性,还有很多其他有用的属性,如:

var str='hello,world';
console.log(str.length);
console.log(str.charAt(0)); //第一个字符 
console.log(str.charAt(str.length-1)); // 最后一个字符 
//substring(starti,endi), 截取 字符串 起始startistartii, 到endi结束,且含头不含尾,没有
// 如果第二个参数没有, 就默认截取到最后一个。  
console.log(str.substring(1,4));
console.log(str.substring(1));
//用法同上,为负数时,就是倒数开始算,一个参数含义是倒数几个。
console.log(str.slice(1,4));
console.log(str.slice(-3));
//字符‘l'首次出现的位置 
console.log(str.indexOf('l'));
//字符‘l'最后一次出现的位置 
console.log(str.lastIndexOf('l'));
//在位置下标3之后,首次出现的位置 
console.log(str.indexOf('l',3));
//用‘,'分割为字符串
console.log(str.split(','));
// 把str中的小写h换成大写H
console.log(str.replace('h','H'));
//讲字符串转化为大写
console.log(str.toUpperCase());

提示:在javascript中字符串本身是固定不变的,上述方法都会返回一个新的字符串值,并不会影响str本身的值

值得注意的是,在ES6中,给字符串增加了很多新的方法,如:

var s = 'Hello world!';
// 返回布尔值,表示参数字符串是否在源字符串中的头部
console.log(s.startsWith('Hello')) // true
//endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部
console.log(s.endsWith('!')) // true
// includes()返回布尔值,表示是否找到了参数字符串
console.log(s.includes('o')) // true

上述的三个方法都支持第二个参数,表示开始搜索的位置

var s = 'Hello world!';
console.log(s.startsWith('world', 6)) // true
console.log(s.endsWith('Hello', 5))// true
console.log(s.includes('Hello', 6)) // false

提示:endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。
repeat方法返回一个新字符串,表示将原字符串重复n次。

console.log('x'.repeat(3)) // "xxx"
console.log('hello'.repeat(2)) // "hellohello"
console.log('na'.repeat(0)) // ""

参数如果是小数,会被取整。

console.log('na'.repeat(2.9)) // "nana"
//如果repeat的参数是负数或者Infinity,会报错。
console.log('na'.repeat(Infinity))
// RangeError
console.log('na'.repeat(-1))
// RangeError

但是,如果参数是0到-1之间的小数,则等同于0,这是因为会先进行取整运算。0到-1之间的小数,取整以后等于-0,repeat视同为0。

console.log('na'.repeat(-0.9)) // ""
//参数NaN等同于0
console.log('na'.repeat(NaN)) // "
//如果repeat的参数是字符串,则会先转换成数字
console.log('na'.repeat('na')) // ""
console.log('na'.repeat('3')) // "nanana"

ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全

//padStart和padEnd一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。
console.log('x'.padStart(5, 'ab')) // 'ababx'
console.log('x'.padStart(4, 'ab')) // 'abax'
console.log('x'.padEnd(5, 'ab')) // 'xabab'
console.log('x'.padEnd(4, 'ab')) // 'xaba'
//如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。
console.log('xxx'.padStart(2, 'ab')) // 'xxx'
console.log('xxx'.padEnd(2, 'ab')) // 'xxx'
//如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。
consoe.log('abc'.padStart(10, '0123456789'))
// '0123456abc'
//如果省略第二个参数,默认使用空格补全长度。
console.log('x'.padStart(4)) // ' x'
console.log('x'.padEnd(4)) // 'x '
//padStart的常见用途是为数值补全指定位数。下面代码生成10位的数值字符串。
console.log('1'.padStart(10, '0') )// "0000000001"
console.log('12'.padStart(10, '0')) // "0000000012"
console.log('123456'.padStart(10, '0')) // "0000123456"
//另一个用途是提示字符串格式。
console.log('12'.padStart(10, 'YYYY-MM-DD')) // "YYYY-MM-12"
console.log('09-12'.padStart(10, 'YYYY-MM-DD'))// "YYYY-09-12"

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Javascript 构造函数 实例分析
Nov 26 Javascript
基于JQuery制作的产品广告效果
Dec 08 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
Apr 12 Javascript
js判断手机端(Android手机还是iPhone手机)
Jul 22 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
Aug 13 Javascript
基于node实现websocket协议
Apr 25 Javascript
Validform表单验证总结篇
Oct 31 Javascript
基于BootStrap实现简洁注册界面
Jul 20 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 Javascript
jquery实现上传图片功能
Jun 29 jQuery
在Vue 中实现循环渲染多个相同echarts图表
Jul 20 Javascript
js 执行上下文和作用域的相关总结
Feb 08 Javascript
利用Javascript裁剪图片并存储的简单实现
Mar 13 #Javascript
js实现手机发送验证码功能
Mar 13 #Javascript
Javascript封装id、class与元素选择器方法示例
Mar 13 #Javascript
原生js实现吸顶效果
Mar 13 #Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
Mar 13 #Javascript
jquery.flot.js简单绘制折线图用法示例
Mar 13 #Javascript
深入理解Node.js中的进程管理
Mar 13 #Javascript
You might like
Window下PHP三种运行方式图文详解
2013/06/11 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
vue-router 组件复用问题详解
2018/01/22 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
python 正则式使用心得
2009/05/07 Python
python模拟登录百度贴吧(百度贴吧登录)实例
2013/12/18 Python
Python返回真假值(True or False)小技巧
2015/04/10 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
python 如何实现遗传算法
2020/09/22 Python
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
大学生暑期实践感言
2014/02/26 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
经理岗位职责范本
2015/04/15 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers