1.8.1 String 里的方法
1. toLowerCase() 和 toUpperCase()
toLowerCase() 和 toUpperCase()1.1 原理
UniCode 编码
两个方法
str.charCodeAt(index)取单个字符,得到它的编码String.fromCharCode(num)将编码转换成字符

上图是基础拉丁语,范围是 0000−007F,共 128 个字符。
1.2 实现
function to(str, min, max, dist){
let arr = str.split('');
for(let i in arr){
let cur = arr[i].charCodeAt();
if(cur >= min && cur <= max) arr[i] = String.fromCharCode(cur + dist);
}
return arr.join('');
}
const toLowerCase = function(str){
const A = 'A'.charCodeAt();
const Z = 'Z'.charCodeAt();
return to(str, A, Z, 32);
}
const toUpperCase = function(str){
const a = 'a'.charCodeAt();
const z = 'z'.charCodeAt();
return to(str, a, z, -32);
}1.3 扩展阅读
2. 用下标取单字符信息
2.1 charAt(i) vs [i]
charAt(i) vs [i]不同点:
兼容性
charAt()ECMAScript 3,IE7 和 IE6 也支持[]ECMAScript 5,IE7 和 IE6 不支持
边界不同
非数值类型,是否进行类型转换
超过有效范围时

https://stackoverflow.com/questions/5943726/string-charatx-or-stringx
2.2 charAt(i) vs at(i)
charAt(i) vs at(i)都返回字符(串),由指定位置的 the single UTF-16 code unit 组成的。
不同点:下标
str.charAt(i)下标范围[0, str.length-1],且会自动进行 Number 类型转换str.at(i)下标支持负数
2.3 charCodeAt() vs codePointAt(i)
charCodeAt() vs codePointAt(i)不同点:对于值大于 0xFFFF 的 code point,它不能被单个 UTF-16 code unit 表示
str.charCodeAt(i),返回整数,范围在
[0, 65535],表示指定位置的 UTF-16 code unit注意:如果 Unicode code point 不,那么此方法只会返回 code point 的一部分(比如 )如果想要整个 code point 的值,可以使用
codePointAt()
str.codePointAt(i)
Last updated