let str = "The sunset sets at twelve o' clock.".toUpperCase();
for (let i in str) {
let charCode = str.charCodeAt(i);
if (65 <= charCode && charCode <= 90)
console.log(charCode - 64);
}
function position(string){
var strArr=string.toLowerCase();
var numArr=[];
for(var i=0;i<strArr.length;i++){
var num=strArr.charCodeAt(i);
if(num>96&&num<123){
num=num-96;
numArr.push(num);
}
}
return numArr.join(" ")
}
英文字母的
ASCII
(10進制):a
97
~ z122
所以減去
96
就是在字母表的位置而
javascript
提供了charCodeAt(0)
可以讓我們把字元轉換成ascii
例子
要理解一下ASCII码呀 http://baike.baidu.com/link?url=QW7x3SLLxI9YjWksMroFW8-bFIxbXLuXMASvpF0KVFO-itKVtCAzjHYmLiMfHgnKa3htZSZSJaEU_3EBrA_IZ_
思路:1、利用toUpperCase或者toLowerCase转换为大写或者小写,
2、用for循环对字符串中的字符遍历,利用charCodeAt进行获取字符的Unicode编码,其中应该要做一下判断,因为字符串中可能会有其他字符,如空格等,因为A是65,a是97,所以如果转换为了大写,应该减去64,小写应该减去96,如果是字母,将所得值push进一个数组
3、最后利用join方法返回字符串,代码如下
我的思路:
1.把26个字母写到一个数组内。
2.把字符串也放到一个数组内,注意:每个字母,是一个数组内元素。
3.两层循环,两个数组内的元素两两比较,相同的输出索引值加1。
更高效的做法不是直接定义好映射字典,然后遍历输出对应的位置?