整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JavaScript中的字符串

          JavaScript中的字符串

          們知道字符串(String)類型是 JavaScript 中的基本數(shù)據(jù)類型之一,也是最常用的數(shù)據(jù)類型啦。下面我們來學(xué)習(xí)一下關(guān)于字符串的屬性方法以及其的使用等。

          什么是字符串

          JavaScript 字符串其實(shí)很好理解,就是被包圍在單引號(hào)或雙引號(hào)中的任意字符。字符串可以用于存儲(chǔ)和處理文本。

          示例:

          例如像下面這樣聲明的變量都是字符串類型:

          var str1="123";
          
          var str2='12356';
          
          var str3="你好,俠課島";
          
          var str4='hello summer';
          
          var str5='good_boy';
          

          一般情況下字符串就是一個(gè)或多個(gè)字符組成,除此之外,我們還可以使用 new 關(guān)鍵字將字符串定義為一個(gè)對(duì)象:

          var name=new String("summer");
          
          console.log(name);  // 輸出:summer
          

          不過一般情況下我們最好不要?jiǎng)?chuàng)建 String 對(duì)象,因?yàn)檫@可能會(huì)導(dǎo)致執(zhí)行速度變慢。

          通過索引訪問字符串

          在 JavaScript 語言中我們可以通過索引來訪問字符串中的每個(gè)字符,字符串的索引也是從 0 開始,第一個(gè)字符索引值為 [0],第二個(gè)字符索引值為[1],以此類推。

          示例:

          例如下述代碼中,我們定義了一個(gè)字符串類型的變量 username,然后輸出變量中索引值為1的字符:

          var username="summer";
          
          console.log(username[1]);  // 輸出: u
          

          因?yàn)樗饕菑?0 開始計(jì)數(shù),那么索引為1,那應(yīng)該就是字符串中的第二個(gè)字符串,也就是 u。

          獲取字符串的長度

          我們先來看下面這個(gè)字符串:

          var hobby="basketball";
          

          你能知道這個(gè)字符串的長度為多少嗎,其實(shí)你數(shù)一下就能知道,這個(gè)字符串的長度就是10。因?yàn)檫@個(gè)字符串有10個(gè)字符,所以它的長度為10。

          這里要注意的是,字符串里面包含的空格也是會(huì)計(jì)入長度的,有1個(gè)空格長度加1,2個(gè)空格長度加2。

          在 JavaScript 語言中,我們可以使用 length 屬性來獲取字符串長度,length 屬性用于返回字符串的長度(字符數(shù))。

          示例:

          例如獲取下面這個(gè)變量 hobby 的長度并輸出:

          var hobby="basketball";
          
          console.log(hobby.length);  // 輸出:10
          

          實(shí)際使用時(shí),可能會(huì)遇到帶有空格的字符串,那么空格會(huì)計(jì)入字符的長度嗎,我們來看看:

          var str1="hello xkd";
          console.log(str1.length);  // 輸出:9
          

          通過輸出結(jié)果我們可以知道,空格也會(huì)計(jì)入字符串的長度的。

          從字符串的長度和索引的關(guān)系,我們可以得出一個(gè)結(jié)論,索引是從0開始,到length-1 結(jié)束的。

          轉(zhuǎn)義字符

          有些時(shí)候,字符串可能無法被解析,例如下面這個(gè)字符串:

          var str1="嘿,你好呀~,"俠課島"";
          console.log(str1);  // Uncaught SyntaxError: Unexpected identifier
          

          那這個(gè)時(shí)候要怎么辦呢,我們可以使用反斜桿 \ 來轉(zhuǎn)義字符串中的雙引號(hào)。

          示例:

          var str1="嘿,你好呀~,\"俠課島\"";
          
          console.log(str1);   //輸出:嘿,你好呀~,"俠課島"
          

          轉(zhuǎn)義字符\可以用于轉(zhuǎn)義撇號(hào),換行,引號(hào),等其他特殊字符。下面是一些可以用于轉(zhuǎn)義字符轉(zhuǎn)義的特殊字符:

          • \':單引號(hào)。
          • \":雙引號(hào)。
          • \:反斜杠。
          • \n:換行符。
          • \r:回車符。
          • \t:制表符(tab)。
          • \b:退格符。
          • \f:換頁符。

          字符串的方法

          字符串的方法有很多,下面我們簡單來看一些比較常用到的幾個(gè)方法:

          • toLowerCase():此方法用于把字符串轉(zhuǎn)為小寫,并返回新的字符串。
          var str1="Hello XKD";
          console.log(str1.toLocaleLowerCase());  
          
          //輸出: hello xkd
          
          • toUpperCase():此方法用于把字符串轉(zhuǎn)為大寫,并返回新的字符串。
          var str1="Hello XKD";
          console.log(str1.toUpperCase());  
          
          //輸出: HELLO XKD
          
          • toString():用于返回一個(gè)表示 String 對(duì)象的值。
          var str1="Hello";
          console.log(str1.toString());  
          
          //輸出: Hello
          
          • concat(): 用于連接兩個(gè)或多個(gè)字符串。
          var str1="Hello";
          var str2="xkd";
          console.log(str1.concat(str2));  
          
          //輸出: Helloxkd
          
          • indexOf():返回某個(gè)指定的子字符串在字符串中第一次出現(xiàn)的位置。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.indexOf('xkd'));  
          
          //輸出: 6
          
          • lastIndexOf():返回某個(gè)指定的子字符串在字符串中最后出現(xiàn)的位置。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.lastIndexOf('o'));   
          
          //輸出: 31
          
          • slice(): 返回字符串中提取的子字符串。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.slice(6, 8)); 
          
          //輸出: xk
          
          • split():把字符串分割成字符串?dāng)?shù)組。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.split(" "));  
          
          //輸出: ["Hello", "xkd,", "Congratulations", "on", "login!"]
          
          • substring():提取字符串中介于兩個(gè)指定下標(biāo)之間的字符。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.substring(11, 17));  
          
          //輸出: Congra
          
          • replace():在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.replace("xkd", "summer"));  
          
          //輸出: Hello summer, Congratulations on login!
          
          • match():返回所有查找的關(guān)鍵字內(nèi)容的數(shù)組。

          們知道字符串(String)類型是 JavaScript 中的基本數(shù)據(jù)類型之一,也是最常用的數(shù)據(jù)類型啦。下面我們來學(xué)習(xí)一下關(guān)于字符串的屬性方法以及其的使用等。

          什么是字符串

          JavaScript 字符串其實(shí)很好理解,就是被包圍在單引號(hào)或雙引號(hào)中的任意字符。字符串可以用于存儲(chǔ)和處理文本。

          示例:

          例如像下面這樣聲明的變量都是字符串類型:

          var str1="123";
          
          var str2='12356';
          
          var str3="你好,俠課島";
          
          var str4='hello summer';
          
          var str5='good_boy';
          

          一般情況下字符串就是一個(gè)或多個(gè)字符組成,除此之外,我們還可以使用 new 關(guān)鍵字將字符串定義為一個(gè)對(duì)象:

          var name=new String("summer");
          
          console.log(name);  // 輸出:summer
          

          不過一般情況下我們最好不要?jiǎng)?chuàng)建 String 對(duì)象,因?yàn)檫@可能會(huì)導(dǎo)致執(zhí)行速度變慢。

          通過索引訪問字符串

          在 JavaScript 語言中我們可以通過索引來訪問字符串中的每個(gè)字符,字符串的索引也是從 0 開始,第一個(gè)字符索引值為 [0],第二個(gè)字符索引值為[1],以此類推。

          示例:

          例如下述代碼中,我們定義了一個(gè)字符串類型的變量 username,然后輸出變量中索引值為1的字符:

          var username="summer";
          
          console.log(username[1]);  // 輸出: u
          

          因?yàn)樗饕菑?0 開始計(jì)數(shù),那么索引為1,那應(yīng)該就是字符串中的第二個(gè)字符串,也就是 u。

          獲取字符串的長度

          我們先來看下面這個(gè)字符串:

          var hobby="basketball";
          

          你能知道這個(gè)字符串的長度為多少嗎,其實(shí)你數(shù)一下就能知道,這個(gè)字符串的長度就是10。因?yàn)檫@個(gè)字符串有10個(gè)字符,所以它的長度為10。

          這里要注意的是,字符串里面包含的空格也是會(huì)計(jì)入長度的,有1個(gè)空格長度加1,2個(gè)空格長度加2。

          在 JavaScript 語言中,我們可以使用 length 屬性來獲取字符串長度,length 屬性用于返回字符串的長度(字符數(shù))。

          示例:

          例如獲取下面這個(gè)變量 hobby 的長度并輸出:

          var hobby="basketball";
          
          console.log(hobby.length);  // 輸出:10
          

          實(shí)際使用時(shí),可能會(huì)遇到帶有空格的字符串,那么空格會(huì)計(jì)入字符的長度嗎,我們來看看:

          var str1="hello xkd";
          console.log(str1.length);  // 輸出:9
          

          通過輸出結(jié)果我們可以知道,空格也會(huì)計(jì)入字符串的長度的。

          從字符串的長度和索引的關(guān)系,我們可以得出一個(gè)結(jié)論,索引是從0開始,到length-1 結(jié)束的。

          轉(zhuǎn)義字符

          有些時(shí)候,字符串可能無法被解析,例如下面這個(gè)字符串:

          var str1="嘿,你好呀~,"俠課島"";
          console.log(str1);  // Uncaught SyntaxError: Unexpected identifier
          

          那這個(gè)時(shí)候要怎么辦呢,我們可以使用反斜桿 \ 來轉(zhuǎn)義字符串中的雙引號(hào)。

          示例:

          var str1="嘿,你好呀~,\"俠課島\"";
          
          console.log(str1);   //輸出:嘿,你好呀~,"俠課島"
          

          轉(zhuǎn)義字符\可以用于轉(zhuǎn)義撇號(hào),換行,引號(hào),等其他特殊字符。下面是一些可以用于轉(zhuǎn)義字符轉(zhuǎn)義的特殊字符:

          • \':單引號(hào)。
          • \":雙引號(hào)。
          • \:反斜杠。
          • \n:換行符。
          • \r:回車符。
          • \t:制表符(tab)。
          • \b:退格符。
          • \f:換頁符。

          字符串的方法

          字符串的方法有很多,下面我們簡單來看一些比較常用到的幾個(gè)方法:

          • toLowerCase():此方法用于把字符串轉(zhuǎn)為小寫,并返回新的字符串。
          var str1="Hello XKD";
          console.log(str1.toLocaleLowerCase());  
          
          //輸出: hello xkd
          
          • toUpperCase():此方法用于把字符串轉(zhuǎn)為大寫,并返回新的字符串。
          var str1="Hello XKD";
          console.log(str1.toUpperCase());  
          
          //輸出: HELLO XKD
          
          • toString():用于返回一個(gè)表示 String 對(duì)象的值。
          var str1="Hello";
          console.log(str1.toString());  
          
          //輸出: Hello
          
          • concat(): 用于連接兩個(gè)或多個(gè)字符串。
          var str1="Hello";
          var str2="xkd";
          console.log(str1.concat(str2));  
          
          //輸出: Helloxkd
          
          • indexOf():返回某個(gè)指定的子字符串在字符串中第一次出現(xiàn)的位置。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.indexOf('xkd'));  
          
          //輸出: 6
          
          • lastIndexOf():返回某個(gè)指定的子字符串在字符串中最后出現(xiàn)的位置。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.lastIndexOf('o'));   
          
          //輸出: 31
          
          • slice(): 返回字符串中提取的子字符串。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.slice(6, 8)); 
          
          //輸出: xk
          
          • split():把字符串分割成字符串?dāng)?shù)組。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.split(" "));  
          
          //輸出: ["Hello", "xkd,", "Congratulations", "on", "login!"]
          
          • substring():提取字符串中介于兩個(gè)指定下標(biāo)之間的字符。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.substring(11, 17));  
          
          //輸出: Congra
          
          • replace():在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。
          var str1="Hello xkd, Congratulations on login!";
          console.log(str1.replace("xkd", "summer"));  
          
          //輸出: Hello summer, Congratulations on login!
          
          • match():返回所有查找的關(guān)鍵字內(nèi)容的數(shù)組。

          arkdown 標(biāo)記應(yīng)該使內(nèi)容更好。那么為什么它經(jīng)常使內(nèi)容變得更糟呢?

          標(biāo)記幫助計(jì)算機(jī)知道如何在用戶界面中呈現(xiàn)文本。沒有標(biāo)記,文本是純文本——一串字符。這對(duì)于簡單的交流來說很好,但純文本無法表達(dá)更復(fù)雜的想法。

          語法使單詞成為有意義的內(nèi)容。標(biāo)記是計(jì)算機(jī)的語法。但是計(jì)算機(jī)語法與作者和讀者使用的語法有很大不同。

          HTML 是網(wǎng)絡(luò)的通用標(biāo)記語言。Markdown 被定位為一些編寫應(yīng)用程序和發(fā)布系統(tǒng)使用的 HTML 的輕量級(jí)替代品。一些內(nèi)容開發(fā)人員將 Markdown 視為混合語法,為人類和機(jī)器提供一種通用語言,一種文本通信的“單一解決方案”。可悲的是,沒有一種語言對(duì)人類和機(jī)器同樣有意義。如果人和機(jī)器必須使用相同的語法,那么兩者都需要做出妥協(xié),并且會(huì)遇到意想不到的結(jié)果。

          標(biāo)記是一種認(rèn)知負(fù)擔(dān)。混入文本的代碼會(huì)干擾作者的話的意思,這就是為什么沒有人直接用 HTML 寫文章的原因。用標(biāo)記裝飾的文本很難讓作家和編輯閱讀。它通過使用既不是單詞也不是標(biāo)點(diǎn)符號(hào)的附加字符來包圍單詞,從而分散了文本所說的內(nèi)容。當(dāng)作者需要在他們的文本中插入標(biāo)記時(shí),他們很可能會(huì)犯錯(cuò)誤,導(dǎo)致計(jì)算機(jī)也難以閱讀標(biāo)記。

          每天早上,在瀏覽我的 iPad 時(shí),我都會(huì)看到標(biāo)記給作者和讀者帶來的問題。

          它們出現(xiàn)在 Apple News 的文章中,清晰地呈現(xiàn)在整潔的容器中。

          蘋果新聞格式

          Apple News 使用 HTML 或 Markdown 的子集發(fā)布文本內(nèi)容。Apple 提醒作者需要確保任何包含的標(biāo)記在語法上是正確的:

          “標(biāo)點(diǎn)符號(hào)很關(guān)鍵。當(dāng)您嘗試預(yù)覽您的文章時(shí),article.json 文件中不正確的標(biāo)點(diǎn)符號(hào)(即使是放錯(cuò)位置的逗號(hào)或彎引號(hào)而不是直引號(hào))也會(huì)產(chǎn)生錯(cuò)誤。”

          這就是標(biāo)記的麻煩——它在很大程度上取決于它的位置。缺少的空間或額外的空間可能會(huì)帶來麻煩。開發(fā)人員理解這一點(diǎn),但內(nèi)容作者不會(huì)期望他們的寫作格式會(huì)在 21 世紀(jì)的第三個(gè)十年出現(xiàn)問題。他們聽說人工智能將很快取代作者。當(dāng)然,計(jì)算機(jī)足夠聰明,可以正確格式化書面文本。

          通常,標(biāo)記會(huì)觸發(fā)文本的計(jì)算機(jī)語法和代碼的計(jì)算機(jī)語法之間的沖突。保留字符尤其如此:計(jì)算機(jī)程序決定使用的特定字符,并且將優(yōu)先于該字符的任何其他用途。計(jì)算機(jī)代碼和書面散文也使用一些相同的標(biāo)點(diǎn)符號(hào)來表示含義。但與這些標(biāo)點(diǎn)符號(hào)相關(guān)的意圖并不相同。

          考慮星號(hào)。它可以充當(dāng)文本中的腳注。在計(jì)算機(jī)代碼中,它可能會(huì)發(fā)出函數(shù)信號(hào)。在

          Markdown 中,它可以是一個(gè)項(xiàng)目符號(hào)或表示文本的粗體。在下面的示例中,我們看到字母“f”周圍有兩個(gè)星號(hào)。作者的目標(biāo)并不清楚,但看起來這些是為了給字母加粗,除了一個(gè)額外的空格阻止了加粗。

          星號(hào)使用錯(cuò)誤


          如果有任何符號(hào)在邏輯上應(yīng)該在含義和使用上標(biāo)準(zhǔn)化,那就是引號(hào)。畢竟,引號(hào)表示其中的文本未修改或不應(yīng)修改。但是使用不同的字符來表達(dá)引用有多種約定。在機(jī)器和人之間,對(duì)于如何表達(dá)引號(hào)以及它們所傳達(dá)的內(nèi)容沒有達(dá)成一致意見。

          當(dāng)引用的文本被打斷時(shí),會(huì)發(fā)生高度可見的缺陷。引號(hào)中的文本應(yīng)該很重要。下面的示例嘗試在短語周圍插入引號(hào),卻錯(cuò)誤呈現(xiàn)了單引號(hào)的 Unicode。

          引用符號(hào)錯(cuò)誤

          這是另一個(gè)引用示例。作者試圖告訴代碼這些引號(hào)是要顯示的。但反斜杠轉(zhuǎn)義字符除了引號(hào)字符外還顯示。引號(hào)不是 Markdown 中要轉(zhuǎn)義的字符。我在 Apple News 上面的路透社帖子中反復(fù)看到這個(gè)問題。

          無法理解的語法


          這個(gè)例子有引號(hào)和撇號(hào)混合,可能還有一個(gè)破折號(hào)——都被渲染為“?”。代碼對(duì)作者的意圖感到困惑,讀者也是如此。

          添加法語口音

          添加了法語字符


          有這樣一個(gè)令人困惑的現(xiàn)象:“null”開始一個(gè)新段落。也許一些 Javascript 代碼正在尋找它沒有找到的東西。由于 Null 遵循以引號(hào)結(jié)尾的鏈接,因此部分混淆似乎是由鏈接的編碼方式產(chǎn)生的。

          錯(cuò)誤引入了 Null


          下面是鏈接問題的另一個(gè)示例。此介紹呈現(xiàn)得很拙劣,因?yàn)?Markdown 編碼不正確。作者在呈現(xiàn)鏈接文本時(shí)無法弄清楚在哪里顯示斜體,并且嘗試了太多。

          歡迎語標(biāo)記錯(cuò)誤


          總結(jié)

          所有這些例子都來自專業(yè)人員創(chuàng)建的付費(fèi)媒體。如果依賴收入的出版商會(huì)犯這種錯(cuò)誤,那么在那些不經(jīng)常編寫網(wǎng)絡(luò)內(nèi)容的企業(yè)中,這種錯(cuò)誤似乎更常見。

          作者不應(yīng)該處理標(biāo)記。不要假設(shè)任何類型的標(biāo)記對(duì)作者來說都是簡單的。有些人認(rèn)為

          Markdown 是標(biāo)記復(fù)雜性的答案。他們相信 Markdown 可以使標(biāo)記變得民主化:任何人都可以容易地正確使用它。Markdown 可能看起來沒有 HTML 復(fù)雜,但這并不意味著它不復(fù)雜。它通過以高度嚴(yán)格的方式使用熟悉的設(shè)備(例如空格和標(biāo)點(diǎn)符號(hào))來隱藏其復(fù)雜性。

          如果作者能夠弄亂標(biāo)記,他們可能會(huì)。一些格式化場(chǎng)景可能很復(fù)雜,需要了解標(biāo)記如何區(qū)分不同字符的優(yōu)先級(jí)以及 Javascript 等代碼如何?期望字符串。例如,在 Markdown 顯示星號(hào)需要在 Apple News 使用兩個(gè)反斜杠進(jìn)行兩次轉(zhuǎn)換。這不應(yīng)該是內(nèi)容作者在截止日期前擔(dān)心的那種細(xì)節(jié)。


          主站蜘蛛池模板: 精品不卡一区二区| 水蜜桃av无码一区二区| 精品视频午夜一区二区| 北岛玲在线一区二区| 日本丰满少妇一区二区三区| 鲁大师成人一区二区三区| 一区二区乱子伦在线播放| 99精品国产一区二区三区不卡| 天堂va在线高清一区| 国产一区在线视频观看| 在线精品亚洲一区二区三区| 免费无码一区二区三区| 日韩美一区二区三区| 夜夜添无码一区二区三区| 日本免费一区二区在线观看| 免费无码一区二区| 久久无码人妻一区二区三区 | 国产视频一区二区在线观看| 一区二区三区四区在线播放| 久久一区二区明星换脸| 日韩a无吗一区二区三区| 国产一在线精品一区在线观看| 亚洲男女一区二区三区| 538国产精品一区二区在线| 3d动漫精品成人一区二区三| 亚洲片国产一区一级在线观看| 无码精品人妻一区二区三区中| 国产福利在线观看一区二区| 国产福利视频一区二区| 日本精品视频一区二区| 亚洲视频一区调教| 大伊香蕉精品一区视频在线 | 一区二区国产在线观看| 亚洲国产成人久久综合一区| 精品国产一区二区三区2021| 久久精品免费一区二区喷潮| 国产另类TS人妖一区二区| 国产伦一区二区三区免费| 亚洲AV无码一区二区三区在线| 精品久久国产一区二区三区香蕉| 久久一区二区三区精华液使用方法|