String
概念
string: 字符串 被成对的单双引号包裹的就是字符串
创建
- 字面量创建: var 变量 = ‘字符’;
- 强制转换: var 变量 = String(数据);
- 构造函数/实例创建: var 变量 = new String(数据);
区别: 1.2创建的是字符串类型 3创建的是对象类型
var str = '123456a';
console.log(str);
console.log(typeof str); // string
var str1 = String(true);
console.log(str1);
console.log(typeof str1); // string
var str2 = new String(false);
console.log(str2); // {"false"}
console.log(typeof str2); // object
长度
length: 字符串.length 长度
下标: 从左往右从0开始的数字
var str3 = '最近,生活在四川甘孜州理塘县的藏族小伙丁真,因为一条不到10秒的视频意外走红网络,不仅被当地聘为旅游大使,更引发了各地文旅机构助推热潮。通过丁真这个窗口让更多人了解到四川乃至全国的景点,网友纷纷表示“这才是网红最好的打开方式”。今晚,我们就从这个藏族小伙聊起。互联网为每个人提供了展现自我的舞台,因为一句话、一个表情、一个动作而走红的不在少数,但像丁真这样引发如此大规模的网络热潮,甚至收获了外交部发言人打call的,却也罕见。有人说丁真的走红,源自于其超高的颜值和帅气的外表,也有人说丁真身上的淳朴和纯真格外打动人。事实上,这些只是让他具备了网红的潜质。真正让他成为“顶级流量”的,是他对家乡、对生活的热爱,让人们感受到逆境中成长的自强不息力量,是镜头中的雪山、白云、藏族服饰等元素,展现了一个丰富多彩而又立体的中国,唤醒了人们对诗和远方的向往,是在他走红之后依然保持的纯真本色,让人们看到一颗赤子之心。';
console.log(str3.length);
指定下标的字符
charAt: 字符串.charAt(下标)
[]: 字符串[下标]
console.log(str3.charAt(51));
console.log(str3[51]);
指定下标的字符的ASCII值
charCodeAt: 字符串.charCodeAt(下标);
0----48 9—57
A----65 Z—90
a----97 z—122
console.log(str3.charCodeAt(51));
字符串比较
字符串的比较: 从左往右,依次比较每一个字符的ASCII值, 如果比较出来大小, 就结束
console.log('100000000000' < '2'); // true
console.log('100' < '1'); // false 48 < 0
查找
indexOf
-
语法: indexOf: 字符串.indexOf(‘匹配的字符’, 起始下标);
起始下标可传可不传
-
查找规则:
查找字符在字符串中出现的第一次的位置,从左往右依次匹配,找到就返回下标,找不到返回-1
起始下标表示要从这个下标的位置开始从左往右依次查找
var str = 'abcdefabcdef'; console.log(str.indexOf('a')); // 0 console.log(str.indexOf('g')); // -1 console.log(str.indexOf('a', 3)); // 6
lastIndexOf
-
语法规则: lastIndexOf: 字符串.lastIndexOf(‘匹配的字符’, 起始下标);
起始下标可传可不传
-
查找规则
查找字符在字符串中出现的第一次的位置,从右往左依次匹配, 找到就返回下标,找不到返回-1
起始下标表示要从这个下标的位置开始从右往左依次查找
console.log(str.lastIndexOf('a')); // 6
console.log(str.lastIndexOf('a', 4)); // 0
截取
substring
substring: 字符串.substring(起始下标, 结束下标);
不传参: 截取返回整个字符串
传一个参数: 从起始下标开始截取到字符串的结束为止 包含起始下标的字符
传两个参数:
起始下标<结束下标: 从起始下标开始截取到结束下标为止, 包含起始下标的字符 不包含结束下标的字符
起始下标>结束下标: 互换位置 然后截取
如果其中一个是负数: 负数变成0, 参考上述规则
var str = 'ABCDEFGHIJK';
console.log(str.substring());
console.log(str.substring(3)); // DEFGHIJK
console.log(str.substring(3, 6)); // DEF
console.log(str.substring(6, 3)); // DEF
console.log(str.substring(3, -4)); // 0-3 ABC
slice
slice: 字符串.slice(起始下标, 结束下标);
不传参: 截取返回整个字符串
传一个参数: 从起始下标开始截取到字符串的结束为止 包含起始下标的字符
传两个参数:
起始下标<结束下标: 从起始下标开始截取到结束下标为止, 包含起始下标的字符 不包含结束下标的字符
起始下标>结束下标: 返回空字符串
如果其中一个是负数(结束): 表示字符从右向左有几个不要
console.log(str.slice());
console.log(str.slice(3)); // DEFGHIJK
console.log(str.slice(3, 6)); // DEF
console.log(str.slice(6, 3)); // 空
console.log(str.slice(3, -3)); // DEFGH
substr
substr: 字符串.substr(起始下标, 截取的长度)
不传参: 截取返回整个字符串
传一个参数: 从起始下标开始截取到字符串的结束为止 包含起始下标的字符
传两个参数: 从起始下标开始截取几位
console.log(str.substr());
console.log(str.substr(3)); // DEFGHIJK
console.log(str.substr(3, 6)); // 从下标3开始截取6个字符 DEFGHI
大小写转换
大写: 字符串.toUpperCase();
小写: 字符串.toLowerCase();
应用: 不区分大小写验证码
var str = 'ASDFGHJasdfghj';
console.log(str);
console.log(str.toUpperCase());
console.log(str.toLowerCase());
替换
replace: 将内容替换成新字符
str.replace(‘要替换的内容’/正则, ‘新字符’/函数);
一次只能替换一个字符
var str = 'abcabc';
console.log(str.replace('a', '***')); // ***bcabc
分割
将字符串按照分割符进行分割
字符串.split(‘分割符’);
分割符可以是一切字符
将字符串分割成数组返回
数组拼接方法:
join: 数组.join(‘连接符’);
连接符默认是,
连接符可以是一切字符 包括标签
将数组组成字符串之后再返回
var str = '12341234';
console.log(str.split('1'));
console.log(str.split('1').join('****'));
console.log(str.split('1').join('<br>'));
var s = str.split('1').join('<b>123</b>');
document.body.innerHTML = s;
trim
trim: 去除字符串左右空格
字符串.trim();
var str = ' 123 121 ';
console.log(str);
console.log(str.trim());