字符串
字符串在底层以
字符数组
保存的,所以具有数组的一个特性
"hello" -> ["h","e","l""l","0"];
-
length
访问字符串的长度
var str = "hello";
//字符串的长度 length
console.log(str.length);
- 通过
下标索引
获取指定的字符
var str = "hello";
// 获取指定的字符
console.log(str[3]);
-
+号
在字符串中起到链接和拼接的作用
var name = "小明";
var age = 20;
var message = "你好, "+ name + ", 你今年'"+ age + "岁了!";
alert(message);
在ES6新增了一种模板字符串,表示方法和上面的多行字符串一样,但是它会自动替换字符串中的变量
var name = "小明";
var age = 20;
var message = "你好, ${name}, 你今年${age}岁了!";
alert(message);
- 字符串不可变性
var str = "hello";
console.log(str);
str[1] = "d";
console.log(str[2]);
console.log(str);
//打印结果
hello
l
hello
//
var str1 = "这是一个字符串"; // 地址:0x120
str1 = "嘎哈啊"; //地址:0x119
console.log(str1);
//打印结果: 嘎哈啊
// 解释: str1在字符串对象 有自己的内存地址 0x120,
// 当在新创建一个 "嘎哈啊" 字符串的时候 0x119
// str1的地址重新指向了 嘎哈啊 0x119 0x120的地址的字符串还是没有发生变化
// 只不过是str1的地址发生的重指向,指向了0x119
字符串常用的方法操作
转化大小写
-
toUpperCase
转化成大写
var s = 'Hello';
s.toUpperCase(); // 返回'HELLO'
-
toLowerCase
转化成小写
var s = 'Hello';
var lower = s.toLowerCase(); // 返回'hello'并赋值给变量lower
lower; // 'hello'
字符串的拼接
concat
var str = "hello";
var resulrt = str.concat("我是","cc");
console.log(resulrt);
//打印结果:
hello我是cc
字符串的替换
-
replace("要替换的字符串","被替换的字符串")
;
var resulrt = hello我是cc
var str1 = resulrt.replace("cc","110");
console.log(str1);
获取字符串的位置
-
indexOf("字符")
返回字符所在的位置- 它是从 前面开始数(从左边开始数), 而且
只找第一个
, 然后返回改字符的位置, 索引号都是从0开始的。 返回的是个数值。 - 如果没有找到,则返回
-1
- 它是从 前面开始数(从左边开始数), 而且
var txt = “abcdef”;
alert(txt.indexOf(“d”)) 结果就是 3
-
lastIndexOf(参数:索引字符串)
- 从后面开始数,找到``第一个字符,但是索引号是 从 左边开始 数的
var txt = “abcdfdef”;
alert(txt.indexOf(“d”)) 结果就是 5
获取子字符串
-
charAt(index)
一个字符串中返回指定的字符
var str1 = "这是一个字符串";
console.log( str1.charAt(4)); // 字
-
slice("开始位置","结束位置")
,其中"结束位置" 可以省略
var txt = "abcdfdef";
alert(txt.slice(0,4)) ;
//结果是:abcd
从0的索引开始到4, 但是不包括4
起始位置可以是负数 , 如果是负数,则是从 右边往左边开始取。
var txt =”asdf”;
txt.slice(-1) 结果是 f
-
substr("开始位置","截取的个数")
- 是指从起始位置开始,往后面数几个
var txt = “abcdefghijk”;
txt.substr(3,4);
-
includes
是否包含字符串 返回是一个Bool值
var str = "svdabc";
str.includes("a");
padStart("最大长度","填充的数据")
var dt = new Date();
var mm = dt.getMinutes();
//转化为字符串
var str = mm.toString(). padStart("2","0");
console.log(str)
// 分钟 02
-padEnd()
例子
var str = "122340.12345";
var num = str.indexOf(".") + 3;
console.log(str.substr(0,num));
- 字符串是可以看成多个字符组成的数组
var str = "hello";
for (var i = 0; i < str.length; i ++) {
console.log(str[I]);
}
- 应用
//找到这个字符串中所有的 o 出现的位置
var str2 = "hello wod odd ott fbo nhyo";
var index = 0;
var key = "o";
while ((index = str2.indexOf(key,index)) != -1){
console.log(index);
index+= key.length;
}
str2.indexOf(key,index) 获取到o的index索引值,在索引值赋值给index,
只要index != -1说明还没有找完, index +=key.length,是让从找到o的下一个位置 继续寻找
//找到这个字符串中每个字符串出现了多少次
//思路:创建一个空对象,字母作为key,字母出现的次数作为Value
var str3 = "whatOareYyouYnoYshaHleiHoHmyHgod";
str3 = str3.toLocaleLowerCase();
var obj = {};
for (var i = 0; i < str3.length; i ++) {
//获取到key
var key = str3[i];
//判断是否存在
if (obj[key]) {
//存在 说明已经出现过,次数加一
obj[key]++;
}else{
//说明是第一次出现,value设置为1
obj[key] = 1;
}
}
for (var key in obj) {
console.log(key +"出现的次数是:" + obj[key] );
}
网友评论