一、什么是字符串
- 就是由一组双引号或单引号组成字符,就是字符串
- 字符串的创建方式
1).字符串的字面量表达式
var str = '大家好,我是周杰伦';
console.log(typeof (str)); //string
2).构造函数
var str = new String();
console.log(str);
console.log(typeof (str));// object
3).
var str = String("你好");
// console.log(str);
- 装箱和拆箱
值类型到引用类型 (装箱)
var str = "abc";
var str2 = new String(str); //装箱
console.log(str2);
引用类型到值类型 (拆箱)
var str = new String("大家好");
console.log(str.toString());
- 字符串有一个特性 (恒定性,不会被修改);
字符串的 length属性
var str = 'abc123';
console.log(str.length);//6
- 遍历字符串
var str = 'abc123';
for (var i = 0; i < str.length; i++) {
console.log(str[i]);
}
for (var key in str) {
console.log(str[key]);
}
二、字符串的方法
- charAt(index)等价于 [index],通过下标取字符
var str = "abc123";
var s = str.charAt(2); // [index]
- charCodeAt(),把字符转成ASCII值
var str = "abc123";
console.log(str.charCodeAt(2)); // 99
console.log(str.charCodeAt(4)); // 50
- String.fromCharCode() 把 ascii码转成字符串,静态方法 工具方法
var str = String.fromCharCode(65, 66, 67);
console.log(str); //ABC
- 截取
substring()
第1个参数:开始位置
第2个参数:结束位置(多数一位)
会自动调整参数的顺序,始终从小到大
var str = "ajsdhkh";
var res = str.substring(3, 5);
var res1 = str.substring(5, 3);
console.log(res);
console.log(res1);
- slice()
var str = "abc123";
var a = str.slice(2, 4);
- substr()
第1个参数:表示开始位置
第2个参数:表示个数
var str = "abc123";
console.log(str.substr(2, 2));
切割 split 返回数组 ,它也是支持正则
var str = "ajsdhkh";
var b = str.split("");//没一个字符都进行切割
var c = str.split("s");//根据 s 进行切割
console.log(b);
console.log(c);
var str1 = "aj,sdh,kh";//根据 , 进行切割
var b = str1.split(",");
console.log(b);
console.log("-------切割");
替换 replace() 支持正则
var str = "你好你好";
var s = str.replace("你", "他");
var b = str.replace(/\你/g, "他")
console.log(s);
console.log(b);
console.log("-------替换");
查找,indexOf 找到了返回下标,找不到 -1
var str = "刘德华";
console.log(str.indexOf("德"));
search 它支持正则(同上)
var str = "刘德华";
console.log(str.search("李"));
match 找到了返回数组,找不到返回null,也是支持正则
var str = "刘德华李德华";
console.log(str.match("你"));
lastIndexOf 同indexOf,从后面开始寻找
合并 concat
var str1 = "abc";
var str2 = "123";
var str3 = str1.concat(str2, "!");
var str4 = str1 + str2 + "!";
console.log(str3);
console.log(str4);
console.log("-------合并");
转大写toUpperCase()
var str1 = "aba啊哈哈DK";
var str2 = str1.toUpperCase();
console.log(str2);
console.log("-------转大写");
转小写toLowerCase()
var str1 = "aba啊哈哈DK";
var str2 = str1.toLowerCase();
console.log(str2);
console.log("-------转小写");
去掉前后空白 trim()
var str=" sadladhoah ";
var s=str.trim();
console.log(str);
console.log(s);
console.log("-------去掉前后空白");
https://www.baidu.com/s?name=avery&age=20&sex=male, 取出name, age和sex的值 (split)
var str = "https://www.baidu.com/s?name=avery&age=20&sex=male";
var a = [];
a = str.split("?");
a = a[1].split("&");
for (var i = 0; i < a.length; i++) {
console.log(a[i].split("=")[1]);
}
任意一段字符串,找出出现次数最多的字符? 扩展题 数组是特殊的对象
var str = "asldaHHGGh9q8qe0811@sASdJjasa";
var arr = [];
for (var i = 0; i < str.length; i++) {
var key = str[i];
if (arr[key] == undefined) {
arr[key] = 1;
} else {
arr[key]++;
}
}
var maxChar = "";
var maxCount = 0;
for (var key in arr) {
if (arr[key] > maxCount) {
maxCount = arr[key];
maxChar = key;
}
}
console.log(maxChar, maxCount);