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中的prototype和constructor简明总结
Apr 05 Javascript
JS中处理时间之setUTCMinutes()方法的使用
Jun 12 Javascript
JavaScript设计模式初探
Jan 07 Javascript
jQuery实现的placeholder效果完整实例
Aug 02 Javascript
AngularJS教程之环境设置
Aug 16 Javascript
如何使用Bootstrap创建表单
Mar 29 Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 Javascript
解决vue 单文件组件中样式加载问题
Apr 24 Javascript
微信小程序实现手势滑动卡片效果
Aug 26 Javascript
JavaScript中this函数使用实例解析
Feb 21 Javascript
js实现无缝轮播图特效
May 09 Javascript
详解Vue的组件中data选项为什么必须是函数
Aug 17 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
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
javascript 数组排序函数
2009/08/20 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
python类定义的讲解
2013/11/01 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
python try 异常处理(史上最全)
2019/03/07 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
Series和DataFrame使用简单入门
2019/11/13 Python
精选干货:Java精选笔试题附答案
2014/01/18 面试题
共产党员岗位承诺书
2014/05/29 职场文书
2014年库房工作总结
2014/11/26 职场文书
感恩教师节主题班会
2015/08/12 职场文书
《折线统计图》教学反思
2016/02/22 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python