[JavaScript]基本包装类型String
基本包装类型
即把简单数据包装成了复杂数据类型。
三个特殊引用类型:String、Number、Boolean。
字符串的不可变
看上去可以改变内容,其实改变的是地址。
(所以不要大量的拼接字符串,会占用大量内存,出现效率问题。)
字符串的各种操作不会改变本身,而是返回新的字符串。
字符串索引
string.indexOf(需要查找的字符);
string.indexOf(需要查找的字符, 起始索引); 用法和Array一样
根据索引返回字符
1. .charAt(index);
2. .charCodeAt(index); 需要注意:这个方法返回的是字符的ASCII码
3. str[index] H5 新增的方法,注意兼容性
字符串操作
1. .concat(str1, str2, str3, ...); 连接多个字符串,类似+,开发中更常使用+。
2. .substr(start, length); start表示开始的索引,length表示选取的长度(新字符串的length)。
3. .slice(start, end); start表示开始的索引(取到),end表示结束的索引(取不到)。
4. .substring(start, end); start表示开始的索引(取到),end表示结束的索引(取不到)。
和.slice()类似,但不接受负值。?存疑
5. 替换: .replace('被替换的字符', '替换后的字符');
6. 拆分为数组: .split('分隔符'); 字符串拆分后返回数组
7. 转为大写: .toUpperCase();
8. 转为小写: .toLowerCase();
练习:
找出字符串中出现最多的字符,及其出现次数。
// 找出字符串中出现最多的字符,及其出现次数。 var song = 'Nevermind, I"ll find someone like you.'; // 方法一:自己写的思路 var charMost = ''; var times = 0; // debugger; for (var i = 0; i < song.length; i++) { var searchChar = song.charAt(i); var searchIndex = song.indexOf(searchChar); var searchTimes = 0; while (searchIndex !== -1) { searchTimes++; searchIndex = song.indexOf(searchChar, searchIndex + 1); } if (searchTimes > times) { times = searchTimes; charMost = searchChar; } } console.log(charMost, times); // 方法二:使用对象 var counter = {}; for (var i = 0; i < song.length; i++) { var char = song.charAt(i); // 思考:以下用对象名.属性名可以吗? if (counter[char]) { counter[char]++; } else { counter[char] = 1; } console.log(counter); } var max = 0; var maxChar = ''; // 遍历对象 for (var k in counter) { if (counter[k] > max) { maxChar = k; max = counter[k]; } } console.log(maxChar, max);