複製鏈接
請複製以下鏈接發送給好友

charCodeAt

鎖定
charCodeAt是html代碼的一種。
外文名
charCodeAt
領    域
計算機網絡
相    關
網頁
所屬分類
html代碼

目錄

charCodeAt簡介

charAt()方法和charCodeAt()方法用於選取字符串中某一位置上的單個字符。對於檢查用户輸入的有效性,這兩個方法也是非常有用的。charAt()方法具有一個參數:即所選取字符在字符串中的位置。charAt()方法的返回值就是該位置上的字符字符串中字符的索引位置從0開始,因此,第一個字符的索引是0,第二個字符的索引是1,依此類推。

charCodeAt示例

例如,要選取一個字符串中最後一個字符,可以使用如下代碼:
var myString = prompt("Enter some text","Hello World!");
var theLastChar = myString.charAt(myString.length - 1);
document.write("The last character is " + theLastChar);
上面的第一行代碼使用prompt() 函數顯示一個提示框,請求用户輸入一個字符串,如果用户未輸入,則默認值為"Hello World! ",變量myString用於保存prompt()函數返回的字符串。
在上面的第二行代碼中,使用charAt()方法獲取字符串中的最後一個字符。我們傳入charAt()方法的參數是最後一個字符的索引位置:(myString.length–1)。以字符串"Hello World! "為例,這個字符串的長度為12,則最後一個字符的索引為11。這是因為字符串的索引從0開始計算,把字符串的長度減去1就得到最後一個字符的索引。
在上面的第三行代碼中,將最後一個字符輸出在頁面上。
charCodeAt()方法與charAt()方法類似,但它並不返回指定位置上的字符本身,而是返回該字符在Unicode字符集中的編碼值。計算機只能理解數字,對於計算機來説,所有字符串都是某種編碼的數字。當需要使用的是數字編碼所代表的字符,而不是使用數字本身時,計算機將根據編碼與字符集的內部對應關係,把每一個編碼轉換為字符集中相應的字符。
例如,要選取一個字符串中第一個字符的Unicode編碼,可以使用如下代碼:
var myString = prompt("Enter some text","Hello World!");
var theFirstCharCode = myString.charCodeAt(0);
document.write("The first character code is " + theFirstCharCode);
上面的代碼將獲取用户輸入字符串的第一個字符的Unicode編碼,並把編碼輸出在頁面上。
字符是按順序進行編碼的,例如,字符A的編碼是65,字符B的編碼是66,依此類推。小寫字母從97開始編碼,即字母a的編碼是97,字母b的編碼是98,依此類推。數字字符則是從48開始編碼,字符0的編碼是48,而字符9的編碼是57。我們可以使用字符的編碼來實現一些功能,例如下面的例子。
在下面這個例子中,我們將使用charCodeAt()方法來檢查指定字符串的第一個字符,以確定它是數字、大寫字符、小寫字符或其他字符:
<html>
<head>
<script language="JavaScript" type="text/javascript">
function checkCharType(charToCheck)
{
var returnValue = "O";
var charCode = charToCheck.charCodeAt(0);
if (charCode >= "A".charCodeAt(0) && charCode <= "Z".charCodeAt(0))
{
returnValue = "U"; }
else if (charCode >= "a".charCodeAt(0) && charCode <= "z".charCodeAt(0))
{
returnValue = "L";
}
else if (charCode >= "0".charCodeAt(0) && charCode <= "9".charCodeAt(0))
{
returnValue = "N";
}
return returnValue;
}
</script>
</head>
<body>
<script language="JavaScript" type="text/javascript">
var myString = prompt("Enter some text","Hello World!");
switch (checkCharType(myString))
{
case "U":
document.write("First character was upper case");
break;
case "L":
document.write("First character was lower case");
break;
case "N":
document.write("First character was a number");
break;
default:
document.write("First character was not a character or a number");
}
</script>
</body>
</html>
文本編輯器中輸入上面的代碼,並保存為ch4_examp1.htm。
瀏覽器中打開該頁面,將會提示你輸入一個字符串。在輸入了字符串後,該程序將在頁面上顯示所輸入字符串的第一個字符的類型信息—— 即該字符是大寫字符、小寫字符、數字、或其他的字符,如標點符號。
代碼解説
在上面示例的開始,首先定義了一個將在頁面代碼中使用的函數checkCharType()。在該函數中,首先定義了變量returnValue並將它初始化為"O",以表示除大寫字符、小寫字符、數字之外的其他字符。
function checkCharType(charToCheck)
{
var returnValue = "O";
變量returnValue將作為函數的返回值返回給調用方,它包含了代表字符類型的數據。它將用U代表大寫字母、L代表小寫字母、N代表數字字符,而O代表其他字符。
在接下來的一行代碼中,使用charCodeAt()方法獲取參數charToCheck中的字符串首字符的編碼。charToCheck正是該函數唯一的參數。首字符的編碼將保存在變量charCode中。
var charCode = charToCheck.charCodeAt(0);
在接下來的代碼中,使用了一系列的if語句,用於檢查首字符的編碼包含在哪一個編碼期中。如果首字符的編碼在字符A和字符Z的編碼之間,則它是一個大寫字符,就把變量returnValue的值設置為U。如果首字符的編碼在字符a和字符z的編碼之間,則它是一個小寫字符,就把變量returnValue的值設置為L。如果首字符的編碼在字符0和字符9的編碼之間,則它是一個數字字符,就把變量returnValue的值設置為N。否則,如果首字符的編碼不屬於以上任何一個範圍,則使變量returnValue保持初始值O,來表示除大寫字符、小寫字符、數字之外的其他字符。
if (charCode >= "A".charCodeAt(0) && charCode <= "Z".charCodeAt(0))
{
returnValue = "U";
}
else if (charCode >= "a".charCodeAt(0) && charCode <= "z".charCodeAt(0))
{
returnValue = "L";
}
else if (charCode >= "0".charCodeAt(0) && charCode <= "9".charCodeAt(0))
{
returnValue = "N";
}
上面這段代碼看起來有點怪異,我們來仔細地看一看JavaScript是如何處理的。對於如下語句:
"A".charCodeAt(0)
字符串字面值"A"是一個基本數據類型的字符串,而不是一個對象。上面這行代碼將字符串字面值"A"作為一個String對象來使用,並調用了String對象的charCodeAt()方法。JavaScript將理解這個操作的含義,並把字符串字面值"A"轉換為一個臨時的String對象,該對象中包含了字符串"A"。在此之後,JavaScript將通過這個自動創建的臨時String對象來執行 charCodeAt()方法。當charCodeAt()方法執行完畢,這個臨時的String對象就會被釋放掉。上面這行代碼可以被視為是下面代碼的一種簡寫形式:
var myChar = new String("A");
myChar.charCodeAt(0);
無論採用何種形式,都將返回首字符的Unicode編碼。即"A".charCodeAt(0)將返回字符"A"的Unicode編碼65。
在函數的最後,使用return語句將變量returnValue作為返回值返回給調用方。
return returnValue;
}
也許你會奇怪,為什麼我們不直接返回代表類別的字符,而要使用一個變量returnValue呢?例如,可以將上面的代碼改寫為如下代碼:
if (charCode >= "A".charCodeAt(0) && charCode <= "Z".charCodeAt(0))
{
return "U";
}
else if (charCode >= "a".charCodeAt(0) && charCode <= "z".charCodeAt(0))
{
return "L";
}
else if (charCode >= "0".charCodeAt(0) && charCode <= "9".charCodeAt(0))
{
return "N";
}
return "O";
這段代碼仍然能正常運行,但為什麼我們不採用這種方式呢?這種方式的缺點就是在一個函數中使用了多個return語句,這使得函數的執行流難於跟蹤。對於一個較小的函數來説,這可能並不是什麼大問題,但對於一個較複雜的函數來説,就可能變成一個棘手的問題。採用第一種方式的代碼,在函數結束前只有一個唯一的return語句,我們可以非常準確地知道函數將在這個return語句後結束。而對於第二個版本的函數,它具有4個return語句,因此函數可能在任何一個可達的return語句之後結束。這樣,函數將具有4個可能的出口和返回位置。這使得對函數中執行流的判斷更加麻煩。
在頁面的代碼中,我們使用了一些語句來測試函數checkCharType()的功能。首先,用變量myString來作為用於測試的字符串,這個字符串是用户在prompt()提示框中輸入的,或者是prompt()函數的默認值"Hello World!"。
var myString = prompt("Enter some text","Hello World!");
接下來,把函數checkCharType()作為switch語句的比較表達式。根據checkCharType()函數的返回值,某一個case語句的條件將被匹配,case語句之後的代碼將被執行,並將字符的類型信息顯示給用户。
switch (checkCharType(myString))
{
case "U":
document.write("First character was upper case");
break;
case "L":
document.write("First character was lower case");
break;
case "N":
document.write("First character was a number");
break;
default:
document.write("First character was not a character or a number");
}
這個例子到這裏就結束了,但是值得注意的是,這僅僅是一個例子—— 為了演示charCodeAt()函數用法的例子。在實際編程中,可以使用更簡潔的方法,即可以用如下代碼:
if (char >= "A" && char <= "Z")
代替例子中使用的代碼:
if (charCode >= "A".charCodeAt(0) && charCode <= "Z".charCodeAt(0))
javascript的一個方法
charCodeAt 方法
返回一個整數,代表指定位置上字符的 Unicode 編碼。
strObj.charCodeAt(index)
參數strObj
必選項。任何 String 對象或文字。
index
必選項。將被處理的字符的從零開始計數的編號。
有效值為 0 到字符串長度減 1 的數字。
説明一個字符串中的第一個字符編號為 0,第二個字符編號為 1,依此類推。
如果指定位置沒有字符,將返回 NaN。
示例以下示例闡明瞭 charCodeAt 方法的用法。
function charCodeAtTest(n)
{ var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //初始化變量
var n; //聲明變量
n = str.charCodeAt(n - 1); //獲取位置 n 上字符的 Unicode 值。
return(n); //返回該值。
}
就像這個例子一樣,返回的是下標從0開始n的位置的Unicode編碼.