Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評(píng)論 :: 0 Trackbacks

          javascript 字符串處理

          文章來源:http://lmgq.vip.sina.com/tech/jsadvancedlesson/c2p1.htm

          一、聲明字符串:
          var normal_monkey = "I am a monkey!<br>";
          document.writeln("Normal monkey " + normal_monkey);

          var bold_monkey = normal_monkey.bold();
          document.writeln("Bold monkey " + bold_monkey);

          這里的聲明: var bold_monkey = normal_monkey.bold();
          和下面對(duì)聲明是等同的: 
          var bold_monkey = "<b>" + normal_monkey + "</b>";

          第1個(gè)版本的聲明看起來要簡(jiǎn)明得多。這里用到了字符串對(duì)象中
          的bold對(duì)象,其他的字符串對(duì)象還有indexOf, charAt, 
          substring, 以及split, 這些方法可以深入字符串的組成結(jié)構(gòu)。
          首先我們研究一下indexOf。

          2、indexOf
          indexOf用于發(fā)現(xiàn)一系列的字符在一個(gè)字符串中等位置并告訴你子字符串的起始位置。如

          果一個(gè)字符串中部包含該子字符串則indexOf返回returns "-1."
          例子:
          var the_word = "monkey"; 
           //讓我們從單詞 "monkey"開始。 
          var location_of_m = the_word.indexOf("m"); 
           //location_of_m(字母m的位置)將為0,因?yàn)樽帜竚位于該字符串的起始位置。
          var location_of_o = the_word.indexOf("o"); 
           //location_of_o(字母o的位置)將為1。
          var location_of_key = the_word.indexOf("key"); 
           //location_of_key(key的位置)將為3因?yàn)樽幼址?#8220;key”以字母k開始,而k

          在單詞monkey中的位置是3。
          var location_of_y = the_word.indexOf("y"); 
           //location_of_y)字母y的位置)是5。 
          var cheeky = the_word.indexOf("q"); 
           //cheeky值是-1,因?yàn)樵趩卧~“monkey”中沒有字母q。

          indexOf更實(shí)用之處:
          var the_email = prompt("What’s your email address?", "");
          var the_at_is_at = the_email.indexOf("@");
          if (the_at_is_at == -1)
          {
              alert("You loser, email addresses must 
              have @ signs in them.");
          }

          這段代碼詢問用戶的電子郵件地址,如果用戶輸入的電子郵件地址中不包含字符 則 提

          示用戶"@你輸入的電子郵件地址無效,電子郵件的地址必須包含字符@。"

          3、charAt 
          chatAt方法用于發(fā)現(xiàn)一個(gè)字符串中某個(gè)特定位置的字符。
          這里是一個(gè)例子:
          var the_word = "monkey";
          var the_first_letter = the_word.charAt(0);
          var the_second_letter = the_word.charAt(1);
          var the_last_letter = the_word.charAt(the_word.length-1);

          the_first_letter(第1個(gè)字符)是"m"
          the_second_letter(第2個(gè)字符)是"o"
          the_last_letter(最后一個(gè)字符)是 "y"

          注意利用字符串的length(長(zhǎng)度)屬性你可以發(fā)現(xiàn)在包含多少個(gè)字符。在本例中,

          the_word是"monkey",所以the_word.length是6。不要忘記在一個(gè)字符串中第1個(gè)字符的

          位置是0,所以最后一個(gè)字符的位置就是length-1。所以在最后一行中用了

          the_word.length-1。>>

          4、子字符串(substring)
          子字符串(substring)和charAt有些象,不同之處在于它能夠從一個(gè)單詞中抓取整個(gè)的

          子字符串,而不只是字母,這里是其格式:

          var the_substring = the_string.substring(from, to);

          "From"指的是子字符串中第1個(gè)字母的位置,"to"有點(diǎn)奇特,它是該子字符串中比最后

          一個(gè)位置大1的位置.使用這種神奇的方法你可以標(biāo)記子字符串的起始和結(jié)束位置,用

          "to"的位置減去"from"的位置就會(huì)得出該子字符串的長(zhǎng)度:

          var the_string = "monkey";
          var clergy = the_string.substring(0,4);
          var tool = the_string.substring(3,6);

          運(yùn)行該段代碼后變量clergy的值為"monk"; 變量tool的值為"key"。

          子字符串常和indexOf一起使用,將字符串分成若干塊.例如,
          你可以從一個(gè)給定的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.webmonkey.com/javascript/index.html";,則域名 就是

          "www.webmonkey.com" .如果這個(gè)方法對(duì)你來說有些麻煩,我將向你介紹如何使用split

          方法簡(jiǎn)化其執(zhí)行過程.但是首先我們作一些分析.

          基本的技巧是將第1個(gè)斜杠和第2個(gè)斜杠之間的內(nèi)容分離出來:
          var the_url = prompt("What’s the URL?",""); 
          //這行代碼向用戶詢問一個(gè)URL.假設(shè)用戶輸入了
          "http://www.webmonkey.com/javascript/index.html."
          var lead_slashes = the_url.indexOf("http://"); 
          這行代碼確定第一個(gè)雙斜杠的位置.在本例中l(wèi)ead_slashes的值是5,因?yàn)殡p斜杠的位

          置從5開始.

          你可能會(huì)想,通常的URL都是以http://開始,所以雙斜杠的位置肯定是在5開始,為什

          么還要加入indexOf這一段多余的代碼呢?但是問題的關(guān)鍵在于你不知道用戶在填入U(xiǎn)RL

          時(shí)是否一定填入http:,他們也許會(huì)不小心多鍵入了一個(gè)空格,也許他們所鍵入的URL在

          一個(gè)加密服務(wù)器上,其URL是"https://www.whatever.com/"; . 在編程你必須預(yù)料到種種

          可能發(fā)生的問題.所以我們必須用indexOf方法確定雙斜杠的確切的起始位置.

          var domain_start = lead_slashes + 2; 

          這行代碼用于計(jì)算該域名的第1個(gè)字母的起始位置.由于這里有一個(gè)雙斜杠,所以域名

          第1個(gè)字母的起始位置應(yīng)該在雙斜杠所在位置加2的位置.

          var without_resource = the_url.substring(domain_start, the_string.length); 

          這段代碼將域名起始位置往后的所有字符都提取出來.所以執(zhí)行完這行代碼后

          without_resource是"www.webmonkey.com/javascript/index.html." 

          var next_slash = without_resource.indexOf("/"); 

          這行代碼計(jì)算出該字符串中下一個(gè)斜杠的位置,而從該字符串起始位置到這個(gè)斜杠之間

          的內(nèi)容就是域名.在本例中下一個(gè)斜杠的位置是17。

          var domain = without_resource.substring(0, next_slash); 

          最后一步是提取出該字符串起始位置到下一個(gè)斜杠之間的所有內(nèi)容.在本例中使得域名

          等同于"www.webmonkey.com"。

          這樣做確實(shí)很麻煩,利用split方法則可以使該過程容易很多.>>

          5、分割方法(splitting method) 
          你可以使用split方法用限位器來分割一系列的名稱,然后將其
          放在一個(gè)數(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 myfriend.<br>");}

          這段代碼將字符串my_friends分割成包含5個(gè)元素的數(shù)組.JavaScript可以為你自動(dòng)建

          立一個(gè)數(shù)組,所以你無需使用new Array().

          將字符串分割成數(shù)組之后,我們使用了循環(huán)語句寫出每一個(gè)名稱.我們可以利用split方

          法簡(jiǎn)化前面所講到的域名提取:

          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];

          這段代碼簡(jiǎn)化了很多而且也更容易理解.我們來分析一些這段代碼:

          var the_url = prompt("What’s the URL?",""); 

          提示用戶輸入一個(gè)URL,假設(shè)用戶輸入
          "http://www.webmonkey.com/javascript/index.html"; .
          var first_split = the_url.split("http://"); 
          將用戶輸入的字符串分割成兩塊:first_split[0]是"http:",first_split[1]是

          "www.webmonkey.com/javascript/index.html." 
          var without_resource = first_split[1]; 
          //提取出數(shù)組中的第2個(gè)元素,所以現(xiàn)在without_resource是

          "www.webmonkey.com/javascript/index.html." 
          var second_split = without_resource.split("/"); 
          將without_resource分割成3塊:www.webmonkey.com,javascript, 和index.html.現(xiàn)

          在你可以看到split的用途了吧?

          var domain = second_split[0]; 

          現(xiàn)在我們提取出新數(shù)組中的第1個(gè)元素就可得出域名.

          posted on 2010-04-15 23:47 seal 閱讀(320) 評(píng)論(0)  編輯  收藏 所屬分類: Javascript
          主站蜘蛛池模板: 沛县| 高陵县| 白沙| 英超| 施秉县| 定南县| 成安县| 甘肃省| 肇州县| 崇义县| 元阳县| 秦安县| 巴马| 杂多县| 加查县| 阿图什市| 清徐县| 城市| 怀来县| 奉化市| 敖汉旗| 哈巴河县| 黎平县| 双峰县| 岢岚县| 台东市| 合川市| 光山县| 宁夏| 玛曲县| 湖南省| 饶阳县| 思南县| 新蔡县| 刚察县| 淮北市| 宜昌市| 宁陕县| 诸暨市| 万盛区| 都江堰市|