JavaScript String方法

废话不多说,直接看代码

String.startsWith() 返回布尔值,表示参数字符串是否在原字符串的头部。
let str = "hello world!"
str.startsWith('Hello') // true
String.endsWith() 返回布尔值,表示参数字符串是否在原字符串的尾部。
let str = "hello world!"
str.endsWith('!') // true
String.includes() 返回布尔值,表示是否找到了参数字符串。
let str = "hello world!"
str.includes('o') // true

以上三个方法都有第二个参数 n ,表示开始搜索的位置

let str = "hello world!"
str.startsWith('world', 6) // true
str.endsWith('Hello', 5) // true
str.includes('Hello', 6) // false

要注意的是,startsWith,includes,是从n的位置开始往后检索,直到字符串结束;endsWith 是针对前n个字符!

String.repeat(n) 方法返回一个新字符串,表示将原字符串重复n次。
let str = 'abc'
str.repeat(3)  // abcabcabc

写到这里突然想到一个骚操作!清空字符串 是不是可以这样 str.repeat(0)

如果参数是小数,会被取整

let str = 'abc'
str.repeat(3.8)  // abcabcabc
str.repeat(2.1)  // abcabc

如果repeat的参数是负数或者Infinity,会报错。
如果参数是 0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0 到-1 之间的小数,取整以后等于-0,repeat视同为 0。
参数NaN等同于 0。
如果repeat的参数是字符串,则会先转换成数字。

let str = 'abc'
str.repeat('abc') // ""
str.repeat('3') // abcabcabc
str.repeat(NaN) // ""
str.repeat(Infinity)  // RangeError
str.repeat(-1)  // RangeError
str.repeat(-0.9) // ""
String.padStart() 用于头部补全
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'xxx'.padStart(2, 'ab') // 'xxx'
'abc'.padStart(10, '0123456789') // '0123456abc'
'x'.padStart(4) // '   x'
String.padEnd() 用于尾部补全
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
'xxx'.padEnd(2, 'ab') // 'xxx'
'x'.padEnd(4) // 'x   '

上面代码中,padStart()padEnd()一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。

String.trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。trim() 方法删除字符串两端的空白符
const s = '  abc  ';
s.trim() // "abc"
s.trimStart() // "abc  "
s.trimEnd() // "  abc"

上面代码中,trimStart()只消除头部的空格,保留尾部的空格。trimEnd()也是类似行为。
除了空格键,这两个方法对字符串头部(或尾部)的 tab 键、换行符等不可见的空白符号也有效。

浏览器还部署了额外的两个方法,trimLeft()trimStart()的别名,trimRight()trimEnd()的别名。

String.indexOf() 返回字符串中指定文本首次出现的索引
var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("China");  // 17
String.lastIndexOf() 方法返回指定文本在字符串中最后一次出现的索引
var str = "The full name of China is the People's Republic of China.";
var pos = str.lastIndexOf("China");  // 51

如果未找到文本, indexOf()lastIndexOf() 均返回 -1。
均有第二个参数n 表示检索的起始位置 indexOf() 从n到结束,lastIndexOf()从n到开始

String.search() 方法搜索特定值的字符串,并返回匹配的位置
var str = "The full name of China is the People's Republic of China.";
var pos = str.search("China");  // 17

两种方法,indexOf()search(),是相等的。
这两种方法是不相等的。区别在于:
search() 方法无法设置第二个开始位置参数。
indexOf() 方法无法设置更强大的搜索值(正则表达式)。

String.slice() 提取字符串的某个部分并在新字符串中返回被提取的部分
var str = "Apple, Banana, Mango";
str.slice(7,13);  // Banana
str.slice(-13,-7);  // Banana
str.slice(7);  // Banana, Mango
str.slice(-13); // Banana, Mango

该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。
如果某个参数为负,则从字符串的结尾开始计数。
如果省略第二个参数,则该方法将裁剪字符串的剩余部分,负数从结尾计数。

String.substring() 类似于 slice()。不同之处在于 substring() 无法接受负的索引。
String.substr() 类似于 slice()。不同之处在于第二个参数规定被提取部分的长度
var str = "Apple, Banana, Mango";
str.substr(7,6); // Banana
str.substr(7,8); // Banana,M

substr()第二个参数不能为负,因为它定义的是长度。

String.replace() 方法用另一个值替换在字符串中指定的值
var str = "Please visit Microsoft!";
var n = str.replace("Microsoft", "W3School");
n // Please visit W3School!

replace() 方法不会改变调用它的字符串。它返回的是新字符串。
默认只替换首个匹配。
replace() 对大小写敏感。
如需执行大小写不敏感的替换,使用正则表达式 /i(大小写不敏感)
如需替换所有匹配,请使用正则表达式的 g 标志(用于全局搜索)

var str = "abcABC";
str.replace(/a/i, "x"); // xbcABC
str.replace(/A/g, "x"); // abcxBC
str.replace(/A/gi, "x"); // xbcxBC
String.toUpperCase() 把字符串转换为大写
var str = "abc"
str.toUpperCase()  // ABC
String.toLowerCase() 把字符串转换为小写
var str = "ABC"
str.toLowerCase()  // abc
String.concat() 连接两个或多个字符串
var text1 = "a";
var text2 = "b";
text1.concat(" ", text2); // a b
text1.concat(text2); // ab
text1.concat("-", text2); // a-b

所有字符串方法都会返回新字符串。它们不会修改原始字符串。
正式地说:字符串是不可变的:字符串不能更改,只能替换。

String.charAt() 方法返回字符串中指定下标(位置)的字符串 , charCodeAt() 方法返回字符串中指定索引的字符 unicode 编码
String.split() 将字符串转换为数组
var str = "a,b,c,d,e,f";
str.split("|"); // ["a,b,c,d,e,f"]
str.split(" "); // ["a,b,c,d,e,f"]
str.split("");  // ["a", ",", "b", ",", "c", ",", "d", ",", "e", ",", "f"]

完!差不多也就这些东西了

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