字符字面量
字面量 | 含义 |
---|---|
\n | 换行 |
\t | 制表 |
\b | 空格 |
\r | 回车 |
\f | 进纸 |
\\ | 斜杠 |
\xnn | 以十六进制代码nn表示的一个字符(其中n为0-F)。例如:\x41 表示"A" |
\unnnn | 以十六进制代码nnnn表示的一个Unicode字符(其中n为0-F)。例如,\u03a3 表示希腊字符Σ |
转换为字符串
数值的toString方法可以传递参数,没有给定参数,默认是按照十进制
var num = 10;
alert(num.toString());//"10"
alert(num.toString(2));//"1010"
alert(num.toString(8));//"8"
alert(num.toString(16));//"a"
null 和undefined 没有toString方法,可使用转型函数String()替换
var a = null;
var b;
console.log(String(a));//"null"
console.log(String(b));//"undefined";
遍历字符串中某个字符的位置返回一个数组
var str = 'my name is menluyang ,i\'m a tiancai,the most handsome in the world!';
var arr = [];
var pos = str.indexOf('m');
while (pos>-1){
arr.push(pos);
pos = str.indexOf('m',pos+1);
}
console.log(arr);
replace()第二个参数传function的情况
var str = '<p class="hehe">Hello world!</p>'
function htmlEscape(str) {
return str.replace(/[<>&"]/g,function (match, pos, originalText) {
/**
* match 匹配到的值
* pos 匹配到的值的索引
* originalText 要匹配的源整个字符串
*/
switch (match){
case "<":
return "<";
case ">":
return ">";
case "&":
return "&";
case "\"":
return """;
}
})
}
str = htmlEscape(str);
haha.innerHTML = str;
利用localeCompare()对字符串数组进行排序
var strArr = ['apple','orange','banana','pair'];
strArr.sort(function (str1,str2) {
return str1.localeCompare(str2);
});
console.log(strArr);
根据汉字拼音声母排序 英文在汉字前面
let sortArr = ['twins', 'tcp', 't天cp', '天黑黑', '天空', '我怀念的', '我不爱', '我不难过', '张', '郑', '亿', '赢', 'tan'];
function listLoader(list) {
// 23个带声母的英文
let zhLetters = 'abcdefghjklmnopqrstwxyz'.split("");
// 对应23个声母中文的分界字,网上查的,忘了是在哪里看到的了,这个人很厉害
let zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split("");
let letter26 = 'abcdefghijklmnopqrstuvwxyz'.split("");
let segs = [];
let comList = list.sort((a, b) => a.localeCompare(b));
letter26.forEach((letter, i) => {
let cur = { letter: letter.toUpperCase(), data: [] }
list.forEach((item) => {
// 先把字母放到 data 中
if (letter26.includes(item[0].toLowerCase())) {
if (item[0].toLowerCase() === letter.toLowerCase()) {
cur.data.push(item);
}
return;
}
// 再把中文放到 data 中
let index = zhLetters.indexOf(letter);
if(index >= 0 && item.localeCompare(zh[index])>=0&&item.localeCompare(zh[index+1])<0){
cur.data.push(item)
}
});
// 排序
if (cur.data.length) {
cur.data.sort(function(a, b) {
// 'en-zh' 表示英文在中文前面,这个参数规则很繁琐,想要详细了解可查阅其他资料
return a.localeCompare(b, 'en-zh')
})
segs.push(cur);
}
})
return segs
};
console.log(listLoader(sortArr));
/**
* 结果
* [
* {"letter":"T","data":["tan","tcp","twins","t天cp","天空","天黑黑"]},
* {"letter":"W","data":["我不爱","我不难过","我怀念的"]},
* {"letter":"Y","data":["亿","赢"]},
* {"letter":"Z","data":["张","郑"]}
* ]
* /
fromCharCode() 和 chatCodeAt()
var str = '我们是共产主义接班人';
var strArr = str.split('');
var strCode = strArr.map(function (v) {
return v.charCodeAt(0);
});
console.log(strCode);
var newStr = String.fromCharCode.apply(String,strCode);
console.log(newStr);