js String

String

//主要记录String常用对象

//参考
https://wangdoc.com/javascript/stdlib/string.html#stringfromcharcode
https://es6.ruanyifeng.com/
https://developer.mozilla.org/zh-CN/
1.1 String.prototype.length
"abc".length //3
1.2 String.prototype.charAt()
//返回指定位置的字符,参数是从0开始编号的位置。
const str = "string"
console.log(str.charAt(0)) //s
console.log(str.charAt(1)) //t
1.3 String.prototype.charCodeAt()
//返回字符串指定位置的 Unicode 码点(十进制表示),相当于String.fromCharCode()的逆操作
const str = "Hello World"
console.log(str.charCodeAt(0)) //72
console.log(str.charCodeAt(1))  //101
1.4 String.prototype.concat()
//将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回
const str = "Hello"
const msg = str.concat(" Java", "Script") //Hello JavaScript
'a'.concat('b', 'c') // "abc"
1.5 String.prototype.slice()
//提取某个字符串的一部分,并返回一个新的字符串,且不会改动原字符串
//第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置(不含该位置)
const str = "Hello JavaScript"
console.log(str.slice(0,5)) //Hello

//如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度。
console.log(str.slice(0,-15)) //H

//如果第一个参数大于第二个参数(正数情况下),slice()方法返回一个空字符串。
console.log(str.slice(5, 3)) // 空

// 如果省略第二个参数,则表示子字符串一直到原字符串结束
console.log(str.slice(5)) // JavaScript
1.6 String.prototype.substring()
//用于从原字符串取出子字符串并返回,不改变原字符串,跟slice方法很相像。它的第一个参数表示子字符串的开始位置,第二个位置表示结束位置(返回结果不含该位置

const str = "JavaScript"
console.log(str.substring(0))  //JavaScript
console.log(str.substring(0,4))  //Java

//如果第一个参数大于第二个参数,substring方法会自动更换两个参数的位置。
console.log(str.substring(10,4)) //Script
//如果参数是负数,substring方法会自动将负数转为0。
console.log(str.substring(4,-4)) //Java
1.7 String.prototype.substr()
 未来将可能会被移除掉。如果可以的话,使用 substring() 替代它.
//用于从原字符串取出子字符串并返回,不改变原字符串 
//第一个参数是子字符串的开始位置(从0开始计算),第二个参数是子字符串的长度

1.8 String.prototype.indexOf() String.prototype.lastIndexOf()
//用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回-1,就表示不匹配。
const str = "Hello JavaScript World"
console.log(str.indexOf("l")) //2
//indexOf方法还可以接受第二个参数,表示从该位置开始向后匹配。
console.log(str.indexOf("l", 10)) //20

//lastIndexOf方法的用法跟indexOf方法一致,主要的区别是lastIndexOf从尾部开始匹配,indexOf则是从头部开始匹配

//例如查询当前字符串所以'l'出现的位置
const arr = []
 let i = 0;
      while(i < str.length) {
        if(str.indexOf("l", i) !== -1) {
          arr.push(str.indexOf("l", i))
          i = str.indexOf("l", i) + 1
        }else {
          i++
        }
      }
  console.log(arr)//[2, 3, 20]
1.9 String.prototype.trim()
//去除字符串两端的空格,返回一个新字符串,不改变原字符串。
'  hello world  '.trim() //hello world
1.10 String.prototype.toLowerCase()
//将调用该方法的字符串值转为小写形式,并返回 改变原字符串
const str = "HELLO JAVASCRIPT WORLD"
console.log(str.toLowerCase()) //hello javascript world
1.11 String.prototype.toUpperCase()
//将调用该方法的字符串值转为大写形式,并返回 改变原字符串
const str = "Hello JavaScript World"
console.log(str.toUpperCase()) //HELLO JAVASCRIPT WORLD
1.12 String.prototype.match()
//确定原字符串是否匹配某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null
const str = 'cat bat sat fat'
console.log(str.match("bat"))// ['bat', index: 4, input: 'cat bat sat fat', groups: undefined]
//返回的数组还有index属性和input属性,分别表示匹配字符串开始的位置和原始字符串
//其实可以传入正则 正则不熟悉 String.prototype.matchAll()
1.13 String.prototype.search()
//search方法的用法基本等同于match,但是返回值为匹配的第一个位置。如果没有找到匹配,则返回-1
const str = 'cat bat sat fat'
console.log(str.search("sat")) //8
1.14 String.prototype.replace()
//替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式
const str = 'cat bat sat fat'
console.log(str.replace(/a/g, "k"))//ckt bkt skt fkt
1.15 String.prototype.split()
//方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组
'a|b|c'.split('|') // ["a", "b", "c"]
'cat bat sat fat'.split(" ") // ['cat', 'bat', 'sat', 'fat']
"Hello".split("") //['H', 'e', 'l', 'l', 'o']
1.16 String.prototype.includes()
//用于判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false
// 区分大小写
const str = "aaaa bbb cba bac nba"
console.log(str.includes("nba"))//true
1.17 String.prototype.startsWith()/endsWith()
//判断当前字符串是否以另外一个给定的子字符串开头,并根据判断结果返回 true 或 false。
//第二个参数,表示开始搜索的位置
//endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束
//endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部
const str = "aaaa bbb cba bac nba"
console.log(str.startsWith("bbb")) //false
console.log(str.startsWith("bbb",5))// true
console.log(str.endsWith("nba")) //true
console.log(str.endsWith("bac", 16)) //true
1.18 String.prototype.repeat()
//返回一个新字符串,表示将原字符串重复n次
const str = "Hello"
console.log(str.repeat(2)) //HelloHello

//参数如果是小数,会被取整。
console.log(str.repeat(2.4)) //HelloHello

//如果repeat的参数是负数或者Infinity,会报错。

//数是 0 到-1 之间的小数,则等同于 0;
//参数NaN等同于 0。
//repeat的参数是字符串,则会先转换成数字,不能转字符串也是0
'na'.repeat(-0.9) // ""
'na'.repeat('na') // ""
'na'.repeat(NaN) // ""
1.19 String.prototype.padStart() String.prototype.padEnd()
//字符串补全长度的功能
//padStart()用于头部补全,padEnd()用于尾部补全
//padStart()和padEnd()一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串

const str = "World"
str.padStart(11, "Hello ")//Hello World
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'

//如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串
'abc'.padStart(10, '0123456789') //'0123456abc'

//如果省略第二个参数,默认使用空格补全长度
str.padStart(7) //"  World"

//如果第1个参数,小于默认的字符长度,返回默认字符
str.padStart(3) //World
1.20 String.prototype.trimStart() String.prototype.trimEnd()
//它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。
const s = '  abc  ';

s.trim() // "abc"
s.trimStart() // "abc  "
s.trimEnd() // "  abc"
1.21 String.prototype.replaceAll()
//可以一次性替换所有匹配
'aabbcc'.replaceAll('b', '_')// 'aa__cc'

1.22 String.prototype.at()
//接受一个整数作为参数,返回参数指定位置的字符,支持负索引(即倒数的位置)。
//实验性方法 
//与charAt() 唯一不同charAt不支持负索引
const str = 'hello';
str.at(1) // "e"
str.at(-1) // "o"
1.23 String.prototype.toString()
//方法返回指定对象的字符串形式
const str = "World"
console.log(str.toString())// World
1.24 String.prototype.valueOf()
//方法返回  String  对象的原始值
const str = "World"
console.log(str.valueOf())// World
posted @ 2022-04-23 09:40  性感的沙皮  阅读(91)  评论(0编辑  收藏  举报