function alpha()
{
var a=prompt("Enter String: ");
for(var b=[i=0];c=a.charCodeAt(i);)
{
b[i++]=String.fromCharCode(c|(c>96 && c<123));
}
alert(b.join(""))
}
console.log(alpha());
到目前为止,我运行此代码时代码中的某些字母会发生变化,但由于某种原因,它不会将字符串字符更改为全部大写。 (输出示例;我在提示符中键入“hi”,警报输出“i”,因此h因某种原因消失。
答案 0 :(得分:2)
function alpha()
{
var a=prompt("Enter String: ");
var output="";
for(var x=0;x<a.length;x++)
output+=String.fromCharCode(a.charCodeAt(x)>96 && a.charCodeAt(x)<123 ? a.charCodeAt(x)-32: a.charCodeAt(x))
return output;
}
console.log("--" + alpha());
只需获取每个char的ascii代码,如果它在97到122之间(a到z)从val中扣除32以获得相应的大写字符。希望这会有所帮助。
答案 1 :(得分:2)
只是为了感兴趣,这里有一种方法可以在一个没有数组或循环的语句中完成它(至少不是一个显式的循环):
var input = 'ABCdefGHIjkl123.' // or you could prompt("Enter String: ")
var output = input.replace(/[a-z]/g, function(m) {
return String.fromCharCode(m.charCodeAt(0) - 32)
})
console.log(output)
&#13;
答案 2 :(得分:1)
上述评论中提到的Barmar:
如果字符介于97和123之间,则从字符代码中减去32。
您可以使用split
- map
- join
组合使循环逻辑更清晰。
由于您还可以比较JavaScript中的单字符字符串,例如'a' < 'b'
,这可以进一步减少处理字符代码转换所需的代码量。
function alpha (s) {
return s.split('').map(function (c) {
return 'a' <= c && c <= 'z' ? String.fromCharCode(c.charCodeAt(0) - 32) : c
}).join('')
}
console.log(
alpha(prompt("Enter String: "))
)
&#13;
答案 3 :(得分:1)
这就是我要做的事。
function alpha() {
var a = prompt("Enter string: ");
var upper = a.split('').map((e) => e.charCodeAt(0) > 96 && e.charCodeAt(0) < 123 ? String.fromCharCode(e.charCodeAt(0) - 32) : e);
return upper.join('');
}
console.log(alpha());
答案 4 :(得分:1)
由于这是一个学习目标,我只会描述一种方法,并尝试使用此答案作为指导来解决这个问题。
首先要循环遍历字符串中的字符。 对于每个字符,你会想要一些代码将它变成大写字母,假设它是一个字母。 最后你想把大写字母保存在一个变量中。
此链接可能有助于UTF-8字符代码。即使你没有使用utf-8,也可能会给你一些想法。 http://www.utf8-chartable.de/
答案 5 :(得分:0)
这是一种实现它的方法完全不需要调用任何函数:
function myToUpper(string) {
var map = { a: 'A', b: 'B', c: 'C', d: 'D', e: 'E', f: 'F', g: 'G', h: 'H', i: 'I', j: 'J', k: 'K', l: 'L', m: 'M', n: 'N', o: 'O', p: 'P', q: 'Q', r: 'R', s: 'S', t: 'T', u: 'U', v: 'V', w: 'W', x: 'X', y: 'Y', z: 'Z' }
var output = ''
for (var i = 0; i < string.length; i++)
output += map[string[i]] || string[i]
return output
}
console.log( myToUpper('ABCdefGHIjkl123.') ) // 'ABCDEFGHIJKL123.'