2013-03-07 62 views
-5

我想知道如何不使用函數。我試過使用String.fromCharCode,但我想我沒有做對。有任何想法嗎?如何在不使用toUppercase的情況下將字母從小寫更改爲大寫?

+0

請發表你嘗試過什麼。 – 2013-03-07 13:32:16

+4

避免「toUpperCase」有什麼意義?你曾經說過你想做「不使用函數...」,然後立即談論**函數**('fromCharCode')。 – 2013-03-07 13:32:29

+0

看看ASCII圖表http://www.asciitable.com/,很容易看出,只需通過從char的十進制值中加上或減去32即可從上/下轉換。 – asawyer 2013-03-07 13:34:55

回答

5

如果您想要支持除英文字母az之外的任何其他字符,將字符從小寫轉換爲大寫並不重要。 Unicode數據庫中涉及映射。

所以toUpperCase是適合這份工作的最佳工具。根據the spec,它使用Unicode數據庫來選擇適當的大寫字符。 (該鏈接是toLowerCase因爲toUpperCase只是說,它做同樣的事情toLowerCase,但大寫)。

但是如果你只通過z支持英文字母a,那些由字符代碼97到122表示,包括的。 AZ由字符代碼65至90表示,包括端點在內。所以:

var upperChar = String.fromCharCode(lowerChar.charCodeAt(0) - 32); 

會這樣做。但我強烈建議而不是這樣做。

1

看看ascii表ASCII。 A = 65 ... A = 97

而且不要忘了,是不是這樣做的正確的方式,但如果你需要去到這個水平編程的這個是這樣的。這隻適用於ascii(英文字母)。

會有很多缺點,但這是你的問題的答案:)。

1

'A'的ASCII值是65而'a'是97.它們之間的差值是97 - 65 = 32 所以如果我們將在'A'的ASCII值中加32,那麼它將是'a'如果我們將「a」的ASCII值減去32,它將是「A」。所有字母都是如此。 在一般規則:

大寫字母=小寫字符 - 32

小寫字符=大寫字母+ 32

相關問題