從屌絲到架構(gòu)師的飛越(JavaScript篇)-String數(shù)據(jù)類型

一吠勘、介紹

這節(jié)課呢看幼,我們來了解的是JavaScript String數(shù)據(jù)類型幌陕。

我們?cè)跀?shù)據(jù)類型中已經(jīng)簡單的介紹了String數(shù)據(jù)類型,下面我們來詳細(xì)的了解一下String類型搏熄。

JavaScript 字符串用于存儲(chǔ)和處理文本心例。

二、知識(shí)點(diǎn)介紹

1止后、JavaScript字符串

2、創(chuàng)建string對(duì)象方式

3瓜喇、String訪問及查找方式

4乘寒、字符方法

三、上課對(duì)應(yīng)視頻的說明文檔

1烂翰、JavaScript 字符串

字符串可以存儲(chǔ)一系列字符,如 "John Doe"甘耿。

字符串可以是插入到引號(hào)中的任何字符瞧捌。你可以使用單引號(hào)或雙引號(hào):

實(shí)例

var carname = "Volvo XC60";

var carname = 'Volvo XC60';

你可以使用索引位置來訪問字符串中的每個(gè)字符:

實(shí)例

var character = carname[7];

字符串的索引從 0 開始姐呐,這意味著第一個(gè)字符索引值為 [0],第二個(gè)為 [1], 以此類推。

你可以在字符串中使用引號(hào)头谜,字符串中的引號(hào)不要與字符串的引號(hào)相同:

實(shí)例

var answer = "It's alright";

var answer = "He is called 'Johnny'";

var answer = 'He is called "Johnny"';

你也可以在字符串添加轉(zhuǎn)義字符來使用引號(hào):

實(shí)例

var x = 'It\'s alright';

var y = "He is called \"Johnny\"";

1.1鸠澈、字符串長度

可以使用內(nèi)置屬性 length 來計(jì)算字符串的長度:

實(shí)例

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

var sln = txt.length;

1.2、特殊字符

在 JavaScript 中际度,字符串寫在單引號(hào)或雙引號(hào)中涵妥。

因?yàn)檫@樣蓬网,以下實(shí)例 JavaScript 無法解析:

"We are the so-called "Vikings" from the north."

字符串 "We are the so-called " 被截?cái)唷?/p>

如何解決以上的問題呢?可以使用反斜杠 (\) 來轉(zhuǎn)義 "Vikings" 字符串中的雙引號(hào)吵取,如下:

"We are the so-called \"Vikings\" from the north."

反斜杠是一個(gè)轉(zhuǎn)義字符锯厢。 轉(zhuǎn)義字符將特殊字符轉(zhuǎn)換為字符串字符:

轉(zhuǎn)義字符 (\) 可以用于轉(zhuǎn)義撇號(hào)脯倒,換行盔憨,引號(hào)讯沈,等其他特殊字符。

下表中列舉了在字符串中可以使用轉(zhuǎn)義字符轉(zhuǎn)義的特殊字符:

1.3问慎、字符串可以是對(duì)象

通常如叼, JavaScript 字符串是原始值穷劈,可以使用字符創(chuàng)建: var firstName = "John"

但我們也可以使用 new 關(guān)鍵字將字符串定義為一個(gè)對(duì)象: var firstName = new String("John")

實(shí)例

var x = "John";

var y = new String("John");

typeof x // 返回 String

typeof y //? 返回 Object

不要?jiǎng)?chuàng)建 String 對(duì)象。它會(huì)拖慢執(zhí)行速度社证,并可能產(chǎn)生其他副作用:

實(shí)例

var x = "John";? ? ? ? ? ? ?

var y = new String("John");

(x === y) // 結(jié)果為 false评凝,因?yàn)?x 是字符串奕短,y 是對(duì)象

=== 為絕對(duì)相等,即數(shù)據(jù)類型與值都必須相等谬返。

字符串屬性和方法

原始值字符串日杈,如 "John", 沒有屬性和方法(因?yàn)樗麄儾皇菍?duì)象)。

原始值可以使用 JavaScript 的屬性和方法翰蠢,因?yàn)?JavaScript 在執(zhí)行方法和屬性

時(shí)可以把原始值當(dāng)作對(duì)象啰劲。

字符串方法我們將在下一章節(jié)中介紹蝇裤。

1.4、字符串屬性

屬性 描述

constructor 返回創(chuàng)建字符串屬性的函數(shù)

length 返回字符串的長度

prototype 允許您向?qū)ο筇砑訉傩院头椒?/p>

方法 描述

charAt() 返回指定索引位置的字符

charCodeAt() 返回指定索引位置字符的 Unicode 值

concat() 連接兩個(gè)或多個(gè)字符串恋拍,返回連接后的字符串

fromCharCode() 將 Unicode 轉(zhuǎn)換為字符串

indexOf() 返回字符串中檢索指定字符第一次出現(xiàn)的位置

lastIndexOf() 返回字符串中檢索指定字符最后一次出現(xiàn)的位置

localeCompare() 用本地特定的順序來比較兩個(gè)字符串

match() 找到一個(gè)或多個(gè)正則表達(dá)式的匹配

replace() 替換與正則表達(dá)式匹配的子串

search() 檢索與正則表達(dá)式相匹配的值

slice() 提取字符串的片斷藕甩,并在新的字符串中返回被提取的部分

split() 把字符串分割為子字符串?dāng)?shù)組

substr() 從起始索引號(hào)提取字符串中指定數(shù)目的字符

substring() 提取字符串中兩個(gè)指定的索引號(hào)之間的字符

toLocaleLowerCase() 根據(jù)主機(jī)的語言環(huán)境把字符串轉(zhuǎn)換為小寫狭莱,只有幾種語言(如土耳其語)具有地方特有的大小寫映射

toLocaleUpperCase() 根據(jù)主機(jī)的語言環(huán)境把字符串轉(zhuǎn)換為大寫,只有幾種語言(如土耳其語)具有地方特有的大小寫映射

toLowerCase() 把字符串轉(zhuǎn)換為小寫

toString() 返回字符串對(duì)象值

toUpperCase() 把字符串轉(zhuǎn)換為大寫

trim() 移除字符串首尾空白

valueOf() 返回某個(gè)字符串對(duì)象的原始值

1.5默怨、字符串方法

2匙睹、創(chuàng)建String對(duì)象方式

聲明:String對(duì)象的方法也可以在所有基本字符串值中訪問到济竹。

調(diào)用構(gòu)造函數(shù)String():

var str = new String();

var str = new String('hello world');//初始化str,str.length = 11;

3、String訪問及查找的方式

3.1訪問(通過索引)

3.1.1谆棺、charAt()或[]

1個(gè)參數(shù),參數(shù)為字符位置,返回字符

var strValue = new String('hello world');

console.log(strValue.charAt(1));//e

console.log(strValue[1]);//e,IE7及以下版本使用這種方式改淑,會(huì)返回undefined

3.1.2浴讯、charCodeAt()

1個(gè)參數(shù),參數(shù)為字符位置,返回字符編碼

var strValue = new String('hello world');

console.log(strValue.charCodeAt(1));//101

3.2、查找位置

3.2.1仰猖、indexOf()

第一個(gè)參數(shù)為指定子字符串奈籽,第二個(gè)參數(shù)為檢索位置。返回索引躏升,如果沒有找到則返回-1

var str = 'hello world'

str.indexOf('l');//2,返回找到的第一個(gè)字符的位置

str.indexOf('l',6);//9

3.2.2狼忱、lastIndexOf()

與indexOf()的區(qū)別在于,lastIndexOf()是從字符串的末尾向前搜索子字符串

4佃却、字符方法

4.1饲帅、擴(kuò)展字符串

concat()

接受任意數(shù)量參數(shù),用于將一個(gè)或多個(gè)字符串拼接起來染坯,返回拼接得到新的字符串副本丘逸。

var str = new String('hello');

var result = str.concat(' world');

console.log(result);//hello world

typeof result//"string"

4.2、獲取子字符串方法

slice(),substr(),substring()仲锄,這三個(gè)方法都會(huì)返回被操作字符串的子字符串副本儒喊,而且也都接受1或2個(gè)參數(shù)币呵,前閉后開[)

4.2.1、slice()

var str = 'hello';

str.slice(0,2);//"he",第一個(gè)參數(shù)指定字符串開始的位置芯义,第二個(gè)參數(shù)表示字符串到哪里結(jié)束

str.slice(-3);//"llo",o代表-1妻柒,依次倒數(shù),-3代表倒數(shù)第三個(gè)的l

str.slice(-2,-1);//"l",同理绑警,-2代表倒數(shù)第二個(gè)l,-1代表倒數(shù)第一的o

4.2.2央渣、substring()

var str = 'hello';

str.substring(0,2);//"he",此時(shí)的參數(shù)意義同str.slice(0,2)

str.substring(-3);//"hello",substring()方法會(huì)把所有負(fù)值參數(shù)轉(zhuǎn)換為0

str.substring(-3,-2);//"",同上

4.2.3芽丹、substr()

var str = 'hello';

str.substr(1,2);//"el",第一個(gè)參數(shù)指定字符串的開始位置,第二個(gè)參數(shù)指定的則是返回的字符個(gè)數(shù)

str.substr(-3);//"llo",此時(shí)的參數(shù)意義同str.slice(-3)

str.substr(-3,-1);//"",substr()方法會(huì)將負(fù)的第二個(gè)參數(shù)轉(zhuǎn)換為0

substr()方法傳遞負(fù)值時(shí)在IE中存在問題暖庄,它會(huì)返回原始的字符串楼肪,IE9修復(fù)了這個(gè)問題

4.3春叫、將字符串轉(zhuǎn)換為數(shù)組

split()

基于指定的分隔符(可以是字符串,也可以是RegExp對(duì)象)將字符串分割成多個(gè)子字符串价匠,并將結(jié)果放在一個(gè)數(shù)組中呛每,可接受可選的第二個(gè)參數(shù),用于指定數(shù)組的大小洋腮,返回?cái)?shù)組手形。

var color = 'blue,red,orange';

color.split();//["red,blue,orange"],長度為1

color.split(',');//["blue", "red", "orange"],長度為3

var color = 'blue-red-orange';

color.split('-');//["blue", "red", "orange"]库糠,長度為3

color.split(',',2);//["blue", "red"]

4.4、字符串大小寫轉(zhuǎn)換

toLowerCase(),toUpperCase()

var str = 'hello';

str.toUpperCase();//"HELLO"

str.toLowerCase();//"hello"

4.5贷屎、刪除字符串空格方法

trim()

刪除字符串中前置以及后綴的所有空格艘虎,然后返回結(jié)果副本顷帖。

var str = ' hello world ';

str.trim()//"hello world"

4.6、字符串的模式匹配方法

4.6.1榴嗅、match()

參數(shù):只接受一個(gè)參數(shù)陶舞,要么是一個(gè)正則表達(dá)式,要么是一個(gè)RegExp()對(duì)象唠粥。

返回:數(shù)組晤愧。數(shù)組中的第一項(xiàng)是與整個(gè)模式匹配的字符串,之后的每一項(xiàng)(如果有)保存著正則表達(dá)式捕獲組匹配的字符串

本質(zhì)上與調(diào)用exec()相同只厘。

var text = 'cat, bat, sat, fat';

var pattern = /.at/;

var matches = text.match(pattern);

matches // ["cat"]

matches.input // "cat, bat, sat, fat"

matches.index // 0

4.6.2舅巷、search()

參數(shù):與match()方法相同。

返回:字符串中第一個(gè)匹配項(xiàng)的索引赋元,如果沒有匹配項(xiàng)飒房,則返回-1情屹。

search()方法始終從前向后找

var text = 'cat, bat, sat, fat';

var pattern = /at/;

text.search(pattern) // 1

4.6.3、replace()

參數(shù):接收兩個(gè)參數(shù)椅文,第一個(gè)參數(shù)可以是一個(gè)RegExp對(duì)象或者一個(gè)字符串(這個(gè)字符串不會(huì)轉(zhuǎn)換成正則表達(dá)式)惜颇,第二個(gè)參數(shù)可以是一個(gè)字符串或者一個(gè)函數(shù)凌摄。

如果第一個(gè)參數(shù)是字符串,那么只會(huì)替換第一個(gè)子字符串痴怨。要想替換所有子字符串器予,唯一的辦法就是提供一個(gè)正則表達(dá)式乾翔,而且要指定全局標(biāo)志(g)標(biāo)志。

如果第二個(gè)參數(shù)是字符串萌丈,那么還可以使用一些特殊的字符序列,將正則表達(dá)式操作得到的值插入到結(jié)果字符串中肪笋。

也可以是函數(shù)乾颁,傳遞給函數(shù)的參數(shù)依次是模式的匹配項(xiàng)艺栈,模式的匹配項(xiàng)在字符串中的位置湿右,和原始字符串。在正則表達(dá)式定義了多個(gè)捕獲組的情況下吭狡,傳遞給函數(shù)的參數(shù)依次是模式的匹配項(xiàng)丈莺,第一個(gè)捕獲組的匹配項(xiàng)缔俄,以此類推,但最后兩個(gè)參數(shù)分別是模式的匹配項(xiàng)在字符串中的位置和原始字符串蟹略。

var text = 'xxx-love-xxx';

var pattern = /xxx/g;

var result = text.replace(pattern,'2')

result// "2-love-2"

text.replace(/(xxx)-\w{4}-(xxx)/g,'I love YOU');//"I love YOU"

var text = 'xxx-love-xxx';

var pattern1 = /xxx/g;

var result = text.replace(pattern1,'$$')

result// "$-love-$"

var result = text.replace(pattern1,'$&2')

result//"xxx2-love-xxx2"

var result = text.replace(pattern1,'$\'')

result//"-love-xxx-love-"

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市状婶,隨后出現(xiàn)的幾起案子膛虫,更是在濱河造成了極大的恐慌,老刑警劉巖碴倾,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異异雁,居然都是意外死亡纲刀,警方通過查閱死者的電腦和手機(jī)担平,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門暂论,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人展哭,你說我怎么就攤上這事闻蛀【跬矗” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵手蝎,是天一觀的道長柑船。 經(jīng)常有香客問我泼各,道長,這世上最難降的妖魔是什么逆巍? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任锐极,我火速辦了婚禮芳肌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翎迁。我一直安慰自己汪榔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布雌团。 她就那樣靜靜地躺著锦援,像睡著了一般戚嗅。 火紅的嫁衣襯著肌膚如雪枢舶。 梳的紋絲不亂的頭發(fā)上凉泄,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天后众,我揣著相機(jī)與錄音,去河邊找鬼教藻。 笑死右锨,一個(gè)胖子當(dāng)著我的面吹牛绍移,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播轧抗,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼横媚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了抗碰?” 一聲冷哼從身側(cè)響起绽乔,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤折砸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后两芳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體去枷,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡竖螃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年特咆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了录粱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡菜职,死狀恐怖酬核,靈堂內(nèi)的尸體忽然破棺而出宪睹,到底是詐尸還是另有隱情,我是刑警寧澤鹅很,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布促煮,位于F島的核電站,受9級(jí)特大地震影響佑吝,放射性物質(zhì)發(fā)生泄漏绳匀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一疾棵、第九天 我趴在偏房一處隱蔽的房頂上張望戈钢。 院中可真熱鬧,春花似錦是尔、人聲如沸殉了。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽薪铜。三九已至,卻和暖如春恩溅,著一層夾襖步出監(jiān)牢的瞬間隔箍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工鞍恢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留傻粘,地道東北人每窖。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像弦悉,于是被迫代替她去往敵國和親窒典。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容