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两段代码,两个小技巧
Feb 04 Javascript
js时间日期和毫秒的相互转换
Feb 22 Javascript
使用js完成节点的增删改复制等的操作
Jan 02 Javascript
javascript函数特点实例分析
May 14 Javascript
JQuery鼠标移到小图显示大图效果的方法
Jun 10 Javascript
JS实现的另类手风琴效果网页内容切换代码
Sep 08 Javascript
前端框架Vue.js构建大型应用浅析
Sep 12 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
Dec 19 Javascript
AngularJS实现使用路由切换视图的方法
Jan 24 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
Feb 08 Javascript
javascript如何实现create方法
Nov 04 Javascript
vue+Element-ui前端实现分页效果
Nov 15 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
我的论坛源代码(十)
2006/10/09 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
采用call方式实现js继承
2014/05/20 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
通信工程专业毕业生推荐信
2013/12/25 职场文书
基层工作经历证明
2014/01/13 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
2016年学校招生广告语
2016/01/28 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL