alphabet_position("The sunset sets at twelve o' clock.")
return "20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 3 12 15 3 11"
alphabet_position("The sunset sets at twelve o' clock.")
return "20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 3 12 15 3 11"
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);
}
思路:1、利用toUpperCase或者toLowerCase转换为大写或者小写,
2、用for循环对字符串中的字符遍历,利用charCodeAt进行获取字符的Unicode编码,其中应该要做一下判断,因为字符串中可能会有其他字符,如空格等,因为A是65,a是97,所以如果转换为了大写,应该减去64,小写应该减去96,如果是字母,将所得值push进一个数组
3、最后利用join方法返回字符串,代码如下
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(" ")
}
我的思路:
1.把26个字母写到一个数组内。
2.把字符串也放到一个数组内,注意:每个字母,是一个数组内元素。
3.两层循环,两个数组内的元素两两比较,相同的输出索引值加1。
function alphabetPosition(text) {
function asc(str){
return str.charCodeAt(0) - 96
}
return text.toLowerCase().replace(/\s*/g,'').match(/[a-z]/ig).map(asc).join(' ');
}
console.log(alphabetPosition("The sunset sets at twelve o' clock."))
10 回答11.4k 阅读
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
4 回答2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
英文字母的
ASCII
(10進制):a
97
~ z122
所以減去
96
就是在字母表的位置而
javascript
提供了charCodeAt(0)
可以讓我們把字元轉換成ascii
例子