字符与编码的转化)
字符串.charCodeAt(字符串索引)可以把字符串的单个字符,转变成字符编码
String.fromCharCode(字符编码)可以把一个或多个字符编码 转变成字符串。
str = 'cc爱tt';//charCodeAt 能把字符串转换为字符编码
console.log(str.charCodeAt(0));//数字代表字符串的索引
console.log(str.charCodeAt(1));
console.log(str.charCodeAt(2));
console.log(str.charCodeAt(3));
console.log(str.charCodeAt(4));
console.log(String.fromCharCode(99, 99, 29233, 116, 116));
字符串长度与字节长度
- 因为计算机存储的原理,ASCII码字符使用1个字节存储0 - 255 个字符,而unicode使用2个字节 存储2^16个字符,为了节约空间。能采用ASCII字符存储的就是用ASCII字符编码存储,使用一个字节。所以字符串长度与字节长度不是 1 :2 的关系。
var str = 'cc爱tt';
var len = str.length;//字符串的长度
var len1 = 0;//字节长度
for(var i = 0; i < len; i++){
if(str.charCodeAt(i) > 255){
len1 += 2;//大于255表明使用unicode编码
}else{
len1 += 1;//小于等于255使用ASCII编码
}
}
console.log(len);//5
console.log(len1);//6 应为 '爱' 使用2个字节存储
字符串查找
注意:lastIndexOf(字符串,索引)
var str = 'cc爱tt,cc爱tt,cc爱tt';//长度17
// = '01 23456789'
// cc
var index = str.lastIndexOf('cc',7);//是如何比较的呢
console.log(index);
// 从第7个索引开始:把想查询的字符串(cc)的第一个字符放在查询的索引7的位置,从后往前移动开始比对 所以上例 刚开始是7,8索引的'c爱'与'cc'对比,从后往前移动一位,相同了,返回值是6
字符串截取
slice(开始索引,结束索引)
subString (开始索引,结束索引)
区别:
- 索引顺序传入错误 slice不会改变 ; substring 会自己改变
var str = 'cc爱tt,cc爱tt,cc爱tt';
console.log(str.slice(5,1));//返回为空
console.log(str.substring(5,1));//返回 c爱tt 即从 1 到 5 截取
- 传入负数的区别
slice 能够传入负数
substring 传入负数,会把负数当做0并调换位置
var str = 'cc爱tt,cc爱tt,cc爱tt';
console.log(str.slice(2,-1));// 返回 爱tt,cc爱tt,cc爱t 即从索引为2开始截取到倒数第一位,左闭又开 不包括-1位(倒数第一位)
console.log(str.substring(2,-1));//返回 cc 想当于 从0 到 2 截取2位 等同于下面
console.log(str.substring(0,2));
字符串与数组的
array.join(分割的字符):默认为,逗号分割
var arr = ['a',2,4,false];
console.log(arr.join());
console.log(arr.join(''));
string.split(以什么字符作为分割依据) ,这个分割依据将会被剔除。接受正则表达式
var str = 'cc爱tt,cc爱tt,cc爱tt';
console.log(str.split(','));
console.log(str.split('爱'));
var s = 'asd asdf sdfa asdf'
console.log(s.split(' '));//以空格分割
URL编码
encodeURI(unicode编码字符串):把unicede编码字符串转换成URL编码
decodeURI(URL编码字符串):把URL编码字符串转换成unicode编码
encodeURIComponent(unicode编码字符串):把连接地址中包括http://中的冒号和斜杆都会转换
var url = 'https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD%E7%94%B7%E7%AF%AE%E9%A6%96%E6%89%B9%E8%A3%81%E5%91%98';//url地址字符串
var unicode = 'https://www.baidu.com/s?wd=中国男篮首批裁员';
var s = encodeURI(unicode);
console.log(s);
var u = decodeURI(s);
console.log(u);
var c = encodeURIComponent(u);
console.log(c);