在扩展的字符串中有几个方法是es7的一个提案,如果不处理兼容性会导致编译无法通过,处理兼容性的方法:安装一个处理兼容性的库 npm install babel-polyfill --save-dev
{
console.log( 'a', '\uBB61' );// 뭡
console.log('S','\uBB617');// 뭡7 \uBB617大于两个字节的字符,将前四个当做一个字符,第5个之后的当做其他字符
console.log('S','\u{20BB7}');//𠮷
}
//处理大于两个字节的字符
{
//es5 处理 charAt和charCodeAt对处理大于两个字节的字符不准确
let s = '𠮷';
console.log('length', s.length); // 2
console.log('char-0', s.charAt(0)); // 乱码
console.log('char-1', s.charAt(1)); // 乱码
console.log('atchar-0', s.charCodeAt(0)); // 55362
console.log('atchar-1', s.charCodeAt(1)); // 57271
//es6 处理 codePointAt可准确的处理任何字符
let s1 = '𠮷a';
console.log('length', s1.length); // 3
console.log('code0', s1.codePointAt(0)); // 134071
console.log('code0 tostring', s1.codePointAt(0).toString(16)); // 20bb7
console.log('code1', s1.codePointAt(1)); // 57271 codePointAt(1):只取后两个字节
console.log('code2', s1.codePointAt(2)); // 97 -- a
}
{
//es5 方法 fromCharCode 处理大于两个字节的字符 为乱码
console.log(String.fromCharCode("0x20bb7")); // ஷ
//es6 方法 fromCodePoint 处理大于两个字节的字符 准确
console.log(String.fromCodePoint("0x20bb7")); // 𠮷
}
{
let str = '\u{20bb7}abc';
//es5 处理
for( let i = 0; i < str.length; i++){
console.log('es5',str[i]);//� � a b c
}
//es5 处理
for( let code of str ){
console.log('es6', code); //𠮷a b c
}
}
//字符串的包含,起始,结束
{
let str = "string";
console.log('includes', str.includes('c')); //false
console.log('startsWith', str.startsWith('str')); //true
console.log('endsWith', str.endsWith('g')); //true
}
//字符串重复显示
{
let str = "abc";
console.log(str.repeat(2)); // abcabc
}
//使用 `${}`进行简单数据拼接
{
let name = "line";
let info = "hello world";
let n = `i am ${name},${info}`; // i am line,hello world
console.log(n);
}
//字符串数字补零
{
console.log('1'.padStart(2,'0'));// 01
console.log('12'.padStart(2,'0'));// 12
console.log('1'.padEnd(2,'0'));// 10
console.log('12'.padEnd(2,'0'));// 12
}
//标签模板
{
let user = {
name:"list",
info:"hello world"
};
abc`i am${user.name} ${user.info}`;
console.log('aaa',abc`i am${user.name},${user.info}`);
//s :标签模板 v1:第一个参数 user.name v2:第二个参数 user.info
function abc(s,v1,v2){
console.log("abc", s,v1,v2); // s: ["i am ", " ", ""] v1:list v2: hello world
return s+v1+v2;
}
}
// String.raw 对\进行转义
{
console.log(String.raw`Hi\n${1+2}`); // \n换行符没有生效
console.log(`Hi\n${1+2}`); // \n换行符生效
}