如何在JavaScript中處理索引,拆分迎吵,處理字符串

前言

string 是一個(gè)或多個(gè)可能由字母躲撰,數(shù)字或符號(hào)組成的字符序列,在JavaScript中可以通過(guò)索引訪問(wèn)字符串中任意字符击费,并且字符串有很多可用的方法和屬性。

在本教程中桦他,我們將了解字符串和String對(duì)象之間的區(qū)別蔫巩,如何為字符串建立索引,如何訪問(wèn)字符串中的字符以及日常工作中經(jīng)常使用字符串的屬性和方法快压。

字符串和字符串對(duì)象

為了測(cè)試兩者之間的差異圆仔,我們將初始化一個(gè)字符串和一個(gè)字符串對(duì)象。

// Initializing a new string primitive
const stringPrimitive = 'A new string.'

// Initializing a new String object
const stringObject = new String('A new string.')

可以使用typeof來(lái)確定值的類(lèi)型蔫劣。

typeof stringPrimitive
string

在第二個(gè)示例中坪郭,我們使用new String()創(chuàng)建一個(gè)字符串對(duì)象并將其分配給變量。

typeof stringObject
object

字符串是如何索引的

在字符串中每個(gè)字符都對(duì)應(yīng)一個(gè)字符索引脉幢,從0開(kāi)始歪沃。
我們可以新建一個(gè)字符串How are you?

H o w a r e y o u ?
0 1 2 3 4 5 6 7 8 9 10 11

第一個(gè)字符是H,對(duì)應(yīng)著0索引嫌松。最后一個(gè)字符是?沪曙,對(duì)應(yīng)著11。即使是空格字符在37也是有索引的萎羔。

訪問(wèn)字符

下面我們將演示如何訪問(wèn)字符

'How are you?'

使用括號(hào)表示法液走,我們可以訪問(wèn)字符串中任何字符。

'How are you?'[5]
r

我們也可以通過(guò)用索引為參數(shù)的chartAt()方法贾陷,訪問(wèn)字符串中任何字符缘眶。

'How are you?'.charAt(5)
r

反之,我們也可以通過(guò)字符為參數(shù)的indexOf()方法髓废,獲取當(dāng)前字符的索引巷懈。

'How are you?'.indexOf('o')
1

盡管oHow are you字符串中出現(xiàn)兩次,但是indexof(‘o’)只會(huì)返回第一個(gè)o字符的索引

lastIndexOf('o') 就可以用來(lái)返回最后一個(gè)o字符的索引瓦哎。

'How are you?'.lastIndexOf('o')
9

這些方法砸喻,我們也可以以字符串為參數(shù)柔逼,它會(huì)返回第一個(gè)字符的索引。

'How are you?'.indexOf('are')
4

反之割岛,slice()方法以開(kāi)始和結(jié)束索引為參數(shù)愉适,返回一個(gè)字符串。

'How are you?'.slice(8, 11)
you

可能你會(huì)觀察到11就是?癣漆,但是?并沒(méi)有輸出维咸。原因是結(jié)束索引11不包含,只到它前一個(gè)10

'How are you?'.slice(8)
you?

簡(jiǎn)而言之惠爽,charAt()slice()將幫助根據(jù)索引號(hào)返回字符串值癌蓖,而indexOf()lastIndexOf()則相反,根據(jù)提供的字符串字符返回索引號(hào) 婚肆。

字符串長(zhǎng)度

使用length屬性租副,可以返回一個(gè)字符串的長(zhǎng)度。

'How are you?'.length
12

這里面有個(gè)注意點(diǎn)较性,length屬性返回的是從1開(kāi)始到12結(jié)束的實(shí)際長(zhǎng)度12用僧,而不是從0開(kāi)始到11結(jié)束的索引長(zhǎng)度11

大小寫(xiě)轉(zhuǎn)化

在JavaScript中有兩個(gè)自帶的方法toUpperCase()toLowerCase() 赞咙,這個(gè)看字面就可以理解的责循。

'How are you?'.toUpperCase()
HOW ARE YOU?
'How are you?'.toLowerCase()
how are you?

值得注意的是,這些方法不會(huì)更改原始字符串攀操。

分割字符串

JavaScript方法使用指定的分隔符字符串將一個(gè)String對(duì)象分割成子字符串?dāng)?shù)組院仿,以一個(gè)指定的分割字串來(lái)決定每個(gè)拆分的位置。

const originalString = 'How are you?'

// 通過(guò)一個(gè)空字符分割字符串成數(shù)組
const splitString = originalString.split(' ')

console.log(splitString)
[ 'How', 'are', 'you?' ]

有了分割后返回的數(shù)組速和,我們就可以操作這數(shù)組中的值歹垫。

splitString[1]
are

如果沒(méi)有傳入?yún)?shù), split() 會(huì)把字符串分割成每個(gè)字符。

去除空格

JavaScript的trim()方法可以把字符串的兩端空格刪除健芭,但不能刪除中間的空格县钥。空格可以是制表符慈迈。

const tooMuchWhitespace = '     How are you?     '

const trimmed = tooMuchWhitespace.trim()

console.log(trimmed)
How are you?

查找和替換字符串值

我們可以在字符串中搜索值若贮,然后使用replace()方法將其替換為新值。 第一個(gè)參數(shù)將是要找到的值痒留,第二個(gè)參數(shù)將是要替換為的值谴麦。

const originalString = 'How are you?'

// Replace the first instance of "How" with "Where"
const newString = originalString.replace('How', 'Where')

console.log(newString)
Where are you?

我們還可以在replace()第一個(gè)參數(shù)中使用正則表達(dá)式。 例如伸头,replace()僅影響第一個(gè)值匾效,但是我們可以使用g(全局)標(biāo)志來(lái)字符串中所有待替換值,而可以使用i(不區(qū)分大小寫(xiě))標(biāo)志來(lái)忽略大小寫(xiě)恤磷。

const originalString = "Javascript is a programming language. I'm learning javascript."

// Search string for "javascript" and replace with "JavaScript"
const newString = originalString.replace(/javascript/gi, 'JavaScript')

console.log(newString)
JavaScript is a programming language. I'm learning JavaScript.

想要練習(xí)更多的正則表達(dá)式可以訪問(wèn)Regexr 這個(gè)網(wǎng)站面哼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末野宜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子魔策,更是在濱河造成了極大的恐慌匈子,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闯袒,死亡現(xiàn)場(chǎng)離奇詭異虎敦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)政敢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)其徙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人喷户,你說(shuō)我怎么就攤上這事唾那。” “怎么了褪尝?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵通贞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我恼五,道長(zhǎng),這世上最難降的妖魔是什么哭懈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任灾馒,我火速辦了婚禮,結(jié)果婚禮上遣总,老公的妹妹穿的比我還像新娘睬罗。我一直安慰自己,他們只是感情好旭斥,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布容达。 她就那樣靜靜地躺著,像睡著了一般垂券。 火紅的嫁衣襯著肌膚如雪花盐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天菇爪,我揣著相機(jī)與錄音算芯,去河邊找鬼。 笑死凳宙,一個(gè)胖子當(dāng)著我的面吹牛熙揍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播氏涩,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼届囚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼有梆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起意系,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤泥耀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后昔字,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體爆袍,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年作郭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了陨囊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夹攒,死狀恐怖蜘醋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咏尝,我是刑警寧澤压语,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站编检,受9級(jí)特大地震影響胎食,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜允懂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一厕怜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蕾总,春花似錦粥航、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蚀浆,卻和暖如春缀程,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜡坊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工杠输, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秕衙。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓蠢甲,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親据忘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鹦牛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360