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 相关文章推荐
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
Nov 23 Javascript
对JavaScript的eval()中使用函数的进一步讨论
Jul 26 Javascript
用 Javascript 验证表单(form)中多选框(checkbox)值
Sep 08 Javascript
取得窗口大小 兼容所有浏览器的js代码
Aug 09 Javascript
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
利用JavaScript检测CPU使用率自己写的
Mar 22 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
Jun 09 Javascript
AngularJS 面试题集锦
Sep 06 Javascript
WEB前端实现裁剪上传图片功能
Oct 17 Javascript
canvas雪花效果核心代码分享
Feb 19 Javascript
node.js将MongoDB数据同步到MySQL的步骤
Dec 10 Javascript
微信小程序中为什么使用var that=this
Aug 27 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
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
angular分页指令操作
2017/01/09 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
Python实现Linux中的du命令
2017/06/12 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
python实现多进程通信实例分析
2019/09/01 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
美国存储和组织商店:The Container Store
2017/08/16 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
同学会主持词
2014/03/18 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
院系推荐意见
2015/06/05 职场文书
课题研究阶段性总结
2015/08/13 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
高三物理教学反思
2016/02/20 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL