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 相关文章推荐
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
Jan 13 Javascript
js获取日期:昨天今天和明天、后天
Jun 11 Javascript
JavaScript静态类型检查工具FLOW简介
Jan 06 Javascript
AngularJS基础 ng-open 指令简单实例
Aug 02 Javascript
为什么我们要做三份 Webpack 配置文件
Sep 18 Javascript
JavaScript学习笔记之DOM基础操作实例小结
Jan 09 Javascript
Vue中全局变量的定义和使用
Jun 05 Javascript
js笔试题-接收get请求参数
Jun 15 Javascript
微信小程序组件传值图示过程详解
Jul 31 Javascript
基于js实现数组相邻元素上移下移
May 19 Javascript
js+canvas实现刮刮奖功能
Sep 13 Javascript
使用react-virtualized实现图片动态高度长列表的问题
May 28 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
php 执行系统命令的方法
2009/07/07 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
javascript parseInt 大改造
2009/09/27 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
centos系统升级python 2.7.3
2014/07/03 Python
简单使用Python自动生成文章
2014/12/25 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
python定义类的简单用法
2020/07/24 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
国外软件测试工程师面试题
2016/12/09 面试题
护理专业自我鉴定
2014/01/30 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
《海底世界》教学反思
2014/04/16 职场文书
工会积极分子个人总结
2015/03/03 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏