js字符串的方法总结(包括es6新增方法)

这篇博客总结了JavaScript中的字符串方法,包括charAt、charCodeAt、fromCharCode、substring、substr、slice、split、join、replace、match、toLowerCase、toUpperCase、indexOf、lastIndexOf、trim系列方法以及ES6中新增的repeat方法。还提到了ES2019的trimStart和trimEnd,以及字符串转数组和数组转字符串的方法。

1、str.charAt(index), str.charCodeAt(index) ,String.fromCharCode(num1,num2,…,numN)
str.charAt(index); 方法返回指定索引位置处的字符。如果超出有效范围的索引值返回空字符串,index为字符串下标,index取值范围[0,str.length-1]

var str = "fuck"
console.log(str.charAt(3))//k
console.log(str.charAt(9)//""空字符串

str.charCodeAt(index); 返回子字符串的unicode编码,index取值范围同上

String.fromCharCode(num1,num2,…,numN); 根据unicode编码返回字符串
应用:只允许输入数字检测

var str = $("input").val();


if(detectNum(str))
{
  alert("是数字");
}

function detectNum(str1)
{
  var n = 0;
  for(var i=0;i<str1.length;i++)
  {
    n=str1.charCodeAt(i);
    if(n<48 || n>57)
    {
      return false;
    }
  }
  return true;
}

2. 截取字符串substring,substr,slice
substring: (start开始位置的索引,end结束位置索引) 截取后不改变原来字符串,返回一个新的字符串;只写一个参数表示从开始位置截取到最后;截取的位置不包含结束位置的字符

  var str = "apple"
  var new_str = str.substring(1)//表示从索引1开始到字符串结束
  console.log(new_str)//pple
  var new_str2 = str.substring(1,4)//表示从索引1开始到字符串结束
  console.log(new_str2)//ppl

substr:(start开始位置索引,end需要返回的字符个数) 截取后不改变原来字符串,返回一个新的字符串
不写第二个参数表示直到最后

var str='abcdefg';
str.substr(1) //bcdefg   
str.substr(1,1) //b

str.slice(start,end); 两个参数可正可负,负值代表从右截取,返回值:[start,end) 也就是说返回从start到end-1的字符;
注意:起始字符要比结束字符小,否则截取不成功

   var str = 'abcde leodonna'
   console.log(str.slice(1,8))//bcde le
   console.log(str.slice(1,-2))//bcde leodon
   console.log(str.slice(-4,-1))//onn
   console.log(str.slice(8))//odonna

3.字符串分割成数组

str.split(separator,limit); 参数1指定字符串或正则,参照2指定数组的最大长度

例:str.split(""); 每个字符都被分割 [’’,’’,’’,’’]

str.split(); 整个字符串放到数组里 [’’]

【引申】:数组变成字符串

arr.join(分隔符) 以,连接

arr.join(’’) 无缝连接

arr.join(’-’) 以-连接

arr.join(’’ + str + ‘’) 以表达式连接
4.字符串替换
str.replace(rgExp/substr,replaceText) 返回替换后的字符串

var str="cat,bat,sat,fat"; 
var res=str.replace("at","one");//第一个参数是字符串,所以只会替换第一个子字符串 
console.log(res);//cone,bat,sat,fat 
var res1=str.replace(/at/g,"one");//第一个参数是正则表达式,所以会替换所有的子字符串 
console.log(res1);//cone,bone,sone,fone

5. 字符串正则匹配
str.match(rgExp);

 /* 
  match方法:只接受一个参数,由字符串或RegExp对象指定的一个正则表达式 
  search方法:只接受一个参数,由字符串或RegExp对象指定的一个正则表达式 
  search方法返回字符串中第一个匹配项的索引,如果没有匹配项,返回-1 
   */
  var str="cat,bat,sat,fat"; 
  var pattern=/.at/; 
  var matches=str.match(pattern); 
  console.log(matches.index);//0 
  console.log(matches[0]);//cat 
  console.log(pattern.lastIndex);//0 
  //lastIndex表示开始搜索下一个匹配项的字符位置,从0算起 
  var pos=str.search(/at/); 
  console.log(pos);//1 1表示at字符串在原来字符串中第一次出现的位置 

ES2019中还增加matchAll()方法返回一个正则表达式在当前字符串的所有匹配
目前有一个提案,增加了String.prototype.matchAll方法,可以一次性取出所有匹配。不过,它返回的是一个遍历器(Iterator),而不是数组。

const string = 'test1test2test3';

// g 修饰符加不加都可以
const regex = /t(e)(st(\d?))/g;

for (const match of string.matchAll(regex)) {
  console.log(match);
}
// ["test1", "e", "st1", "1", index: 0, input: "test1test2test3"]
// ["test2", "e", "st2", "2", index: 5, input: "test1test2test3"]
// ["test3", "e", "st3", "3", index: 10, input: "test1test2test3"]

遍历器转为数组是非常简单的,使用…运算符和Array.from方法就可以了。

// 转为数组方法一
[...string.matchAll(regex)]

// 转为数组方法二
Array.from(string.matchAll(regex));

6. 字符串大小转换
toLowerCase:方法返回一个字符串,该字符串中的字母被转换成小写。
toUpperCase方法返回一个字符串,该字符串中的所有字母都被转换为大写字母。

var str = "wobushiZZde KuaiiLE"
console.log(str.toLowerCase());//wobushizzde kuaiile
console.log(str.toUpperCase());//WOBUSHIZZDE KUAIILE

7.查找指定字符串位置
indexOf(string) 返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。
lastIndexOf(string) : 返回String对象内最后一次出现子字符串位置。如果没有找到子字符串,则返回-1。
8. 删除字符串前后的空格
trim:

   var str="   hello world   "; 
   console.log('('+str.trim()+')');//(hello world) 
   console.log('('+str+')');//(   hello world   )

ES2019 对字符串实例新增了trimStart()和trimEnd()这两个方法。它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。

const s = '  abc  ';
s.trim() // "abc"
s.trimStart() // "abc  "
s.trimEnd() // "  abc"

浏览器还部署了额外的两个方法,trimLeft()是trimStart()的别名,trimRight()是trimEnd()的别名。
9. 字符串重复n次
repeat方法返回一个新字符串,表示将原字符串重复n次。参数如果是小数,会被取整。如果repeat的参数是负数或者Infinity,会报错。但是,如果参数是 0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0 到-1 之间的小数,取整以后等于-0,repeat视同为 0。参数NaN等同于 0。如果repeat的参数是字符串,则会先转换成数字。

'na'.repeat(2.9) // "nana"
'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError
'na'.repeat(-0.9) // ""
'na'.repeat(NaN) // ""
'na'.repeat('na') // ""
'na'.repeat('3') // "nanana"

es6中更多字符串新增方法请点击:http://es6.ruanyifeng.com/#docs/string-methods#实例方法:repeat
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值