JavaScript進階教程(第二課)第2/3頁
更新時間:2007年04月06日 00:00:00 作者:
子字符串(substring)和charAt有些象,不同之處在于它能夠從一個單詞中抓取整個的子字符串,而不只是字母,這里是其格式:
var the_substring = the_string.substring(from, to);
"From"指的是子字符串中第1個字母的位置,"to"有點奇特,它是該子字符串中比最后一個位置大1的位置.使用這種神奇的方法你可以標記子字符串的起始和結(jié)束位置,用"to"的位置減去"from"的位置就會得出該子字符串的長度:
var the_string = "monkey";
var clergy = the_string.substring(0,4);
var tool = the_string.substring(3,6);
運行該段代碼后變量clergy的值為"monk"; 變量tool的值為"key"。
子字符串常和indexOf一起使用,將字符串分成若干塊.例如,你可以從一個給定的URL中抽取出其域名:
var the_url = prompt("What's the URL?","");
var lead_slashes = the_url.indexOf("http://");
var domain_start = lead_slashes + 2;
var without_resource = the_url.substring(domain_start, the_url.length);
var next_slash = without_resource.indexOf("/");
var domain = without_resource.substring(0, next_slash);
這段代碼的意思是:如果你輸入"http://www.jsfan.org/course/senior",則域名就是"www.jsfan.org" .如果這個方法對你來說有些麻
煩,我將向你介紹如何使用split方法簡化其執(zhí)行過程.但是首先我們作一些分析.
基本的技巧是將第1個斜杠和第2個斜杠之間的內(nèi)容分離出來:
var the_url = prompt("What's the URL?","");
這行代碼向用戶詢問一個URL.假設(shè)用戶輸入了
"http://www.jsfan.org/course/senior"
var lead_slashes = the_url.indexOf("http://");
這行代碼確定第一個雙斜杠的位置.在本例中l(wèi)ead_slashes的值是5,因為雙斜杠的位置從5開始.
你可能會想,通常的URL都是以http://開始,所以雙斜杠的位置肯定是在5開始,為什么還要加入indexOf這一段多余的代碼呢?但是問題的關(guān)鍵在于你不知道用戶在填入URL時是否一定填入http:,他們也許會不小心多鍵入了一個空格,也許他們所鍵入的URL在一個加密服務(wù)器上,其URL是"https://www.whatever.com/" .在編程你必須預(yù)料到種種可能發(fā)生的問題.所以我們必須用indexOf方法確定雙斜杠的確切的起始位置.
var domain_start = lead_slashes + 2;
這行代碼用于計算該域名的第1個字母的起始位置.由于這里有一個雙斜杠,所以域名第1個字母的起始位置應(yīng)該在雙斜杠所在位置加2的位置.
var without_resource = the_url.substring(domain_start, the_string.length);
這段代碼將域名起始位置往后的所有字符都提取出來.所以執(zhí)行完這行代碼后without_resource是"www.jsfan.org/course/senior"
var next_slash = without_resource.indexOf("/");
這行代碼計算出該字符串中下一個斜杠的位置,而從該字符串起始位置到這個斜杠之間的內(nèi)容就是域名.在本例中下一個斜杠的位置是13。
var domain = without_resource.substring(0, next_slash);
最后一步是提取出該字符串起始位置到下一個斜杠之間的所有內(nèi)容.在本例中使得域名等同于"www.jsfan.org"。
這樣做確實很麻煩,利用split方法則可以使該過程容易很多.
你可以使用split方法用限位器來分割一系列的名稱,然后將其放在一個數(shù)組中.例如:
var my_friends = "trixie,moxie,sven,guido,hermes";
var friend_array = my_friends.split(",");
for(loop=0;loop<friend_array.length;loop++)
{
document.writeln(friend_array[loop] + " is my friend.<br>");
}
這段代碼將字符串my_friends分割成包含5個元素的數(shù)組.JavaScript可以為你自動建立一個數(shù)組,所以你無需使用new Array().
將字符串分割成數(shù)組之后,我們使用了循環(huán)語句寫出每一個名稱.我們可以利用split方法簡化前面所講到的域名提?。?
var the_url = prompt("What's the URL?","");
var first_split = the_url.split("http://");
var without_resource = first_split[1];
var second_split = without_resource.split("/");
var domain = second_split[0];
這段代碼簡化了很多而且也更容易理解.我們來分析一些這段代碼:
var the_url = prompt("What's the URL?","");
提示用戶輸入一個URL,假設(shè)用戶輸入"http://www.jsfan.org/course/senior" .
var first_split = the_url.split("http://");
將用戶輸入的字符串分割成兩塊:first_split[0]是"http:",first_split[1]是"www.jsfan.org/course/senior"
var without_resource = first_split[1];
提取出數(shù)組中的第2個元素,所以現(xiàn)在without_resource是"www.jsfan.org/course/senior"
var second_split = without_resource.split("/");
將without_resource分割成3塊:www.jsfan.org, course和senior.現(xiàn)在你可以看到split的用途了吧?
var domain = second_split[0];
現(xiàn)在我們提取出新數(shù)組中的第1個元素就可得出域名.
接下來我們將學(xué)習(xí)相關(guān)數(shù)組的概念,然后我們就正式開始學(xué)習(xí)神奇的cookie.
相關(guān)文章
JavaScript中Cookies的相關(guān)使用教程
這篇文章主要介紹了JavaScript中Cookies的相關(guān)使用教程,包括Cookies的存儲和刪除等操作方法,需要的朋友可以參考下2015-06-06Javascript基礎(chǔ)_簡單比較undefined和null 值
下面小編就為大家?guī)硪黄狫avascript基礎(chǔ)_簡單比較undefined和null 值。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06javaScript獲取對象中非空的屬性實現(xiàn)方法詳解
這篇文章主要為大家介紹了javaScript獲取對象中非空的屬性實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07深入學(xué)習(xí)JavaScript中的原型prototype
這篇文章主要介紹了深入學(xué)習(xí)JavaScript中的原型prototype,是JavaScript入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-08-08Array.slice()與Array.splice()的返回值類型
Array.slice()與Array.splice()的返回值類型...2006-10-10JavaScript ES6中的簡寫語法總結(jié)與使用技巧
我們在看編寫的JS ES6代碼時經(jīng)常會看到許多簡寫的語法,本篇文章就為大家一一介紹JavaScript ES6可以簡寫的語法2018-12-12