如何在JavaScript中处理索引,拆分,处理字符串

前言

string 是一个或多个可能由字母,数字或符号组成的字符序列,在JavaScript中可以通过索引访问字符串中任意字符,并且字符串有很多可用的方法和属性。

在本教程中,我们将了解字符串和String对象之间的区别,如何为字符串建立索引,如何访问字符串中的字符以及日常工作中经常使用字符串的属性和方法。

字符串和字符串对象

为了测试两者之间的差异,我们将初始化一个字符串和一个字符串对象。

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

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

可以使用typeof来确定值的类型。

typeof stringPrimitive
string

在第二个示例中,我们使用new String()创建一个字符串对象并将其分配给变量。

typeof stringObject
object

字符串是如何索引的

在字符串中每个字符都对应一个字符索引,从0开始。
我们可以新建一个字符串How are you?

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

第一个字符是H,对应着0索引。最后一个字符是?,对应着11。即使是空格字符在37也是有索引的。

访问字符

下面我们将演示如何访问字符

'How are you?'

使用括号表示法,我们可以访问字符串中任何字符。

'How are you?'[5]
r

我们也可以通过用索引为参数的chartAt()方法,访问字符串中任何字符。

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

反之,我们也可以通过字符为参数的indexOf()方法,获取当前字符的索引。

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

尽管oHow are you字符串中出现两次,但是indexof(‘o’)只会返回第一个o字符的索引

lastIndexOf('o') 就可以用来返回最后一个o字符的索引。

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

这些方法,我们也可以以字符串为参数,它会返回第一个字符的索引。

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

反之,slice()方法以开始和结束索引为参数,返回一个字符串。

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

可能你会观察到11就是?,但是?并没有输出。原因是结束索引11不包含,只到它前一个10

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

简而言之,charAt()slice()将帮助根据索引号返回字符串值,而indexOf()lastIndexOf()则相反,根据提供的字符串字符返回索引号 。

字符串长度

使用length属性,可以返回一个字符串的长度。

'How are you?'.length
12

这里面有个注意点,length属性返回的是从1开始到12结束的实际长度12,而不是从0开始到11结束的索引长度11

大小写转化

在JavaScript中有两个自带的方法toUpperCase()toLowerCase() ,这个看字面就可以理解的。

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

值得注意的是,这些方法不会更改原始字符串。

分割字符串

JavaScript方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。

const originalString = 'How are you?'

// 通过一个空字符分割字符串成数组
const splitString = originalString.split(' ')

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

有了分割后返回的数组,我们就可以操作这数组中的值。

splitString[1]
are

如果没有传入参数, split() 会把字符串分割成每个字符。

去除空格

JavaScript的trim()方法可以把字符串的两端空格删除,但不能删除中间的空格。空格可以是制表符。

const tooMuchWhitespace = '     How are you?     '

const trimmed = tooMuchWhitespace.trim()

console.log(trimmed)
How are you?

查找和替换字符串值

我们可以在字符串中搜索值,然后使用replace()方法将其替换为新值。 第一个参数将是要找到的值,第二个参数将是要替换为的值。

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()第一个参数中使用正则表达式。 例如,replace()仅影响第一个值,但是我们可以使用g(全局)标志来字符串中所有待替换值,而可以使用i(不区分大小写)标志来忽略大小写。

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.

想要练习更多的正则表达式可以访问Regexr 这个网站。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356