們知道字符串(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é)束的。
有些時(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)義的特殊字符:
字符串的方法有很多,下面我們簡單來看一些比較常用到的幾個(gè)方法:
var str1="Hello XKD";
console.log(str1.toLocaleLowerCase());
//輸出: hello xkd
var str1="Hello XKD";
console.log(str1.toUpperCase());
//輸出: HELLO XKD
var str1="Hello";
console.log(str1.toString());
//輸出: Hello
var str1="Hello";
var str2="xkd";
console.log(str1.concat(str2));
//輸出: Helloxkd
var str1="Hello xkd, Congratulations on login!";
console.log(str1.indexOf('xkd'));
//輸出: 6
var str1="Hello xkd, Congratulations on login!";
console.log(str1.lastIndexOf('o'));
//輸出: 31
var str1="Hello xkd, Congratulations on login!";
console.log(str1.slice(6, 8));
//輸出: xk
var str1="Hello xkd, Congratulations on login!";
console.log(str1.split(" "));
//輸出: ["Hello", "xkd,", "Congratulations", "on", "login!"]
var str1="Hello xkd, Congratulations on login!";
console.log(str1.substring(11, 17));
//輸出: Congra
var str1="Hello xkd, Congratulations on login!";
console.log(str1.replace("xkd", "summer"));
//輸出: Hello summer, Congratulations on login!
們知道字符串(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é)束的。
有些時(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)義的特殊字符:
字符串的方法有很多,下面我們簡單來看一些比較常用到的幾個(gè)方法:
var str1="Hello XKD";
console.log(str1.toLocaleLowerCase());
//輸出: hello xkd
var str1="Hello XKD";
console.log(str1.toUpperCase());
//輸出: HELLO XKD
var str1="Hello";
console.log(str1.toString());
//輸出: Hello
var str1="Hello";
var str2="xkd";
console.log(str1.concat(str2));
//輸出: Helloxkd
var str1="Hello xkd, Congratulations on login!";
console.log(str1.indexOf('xkd'));
//輸出: 6
var str1="Hello xkd, Congratulations on login!";
console.log(str1.lastIndexOf('o'));
//輸出: 31
var str1="Hello xkd, Congratulations on login!";
console.log(str1.slice(6, 8));
//輸出: xk
var str1="Hello xkd, Congratulations on login!";
console.log(str1.split(" "));
//輸出: ["Hello", "xkd,", "Congratulations", "on", "login!"]
var str1="Hello xkd, Congratulations on login!";
console.log(str1.substring(11, 17));
//輸出: Congra
var str1="Hello xkd, Congratulations on login!";
console.log(str1.replace("xkd", "summer"));
//輸出: Hello summer, Congratulations on login!
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ò)誤
所有這些例子都來自專業(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é)。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。