String遍历
//for...of
//除了遍历字符串,这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点
let text = String.fromCodePoint(0x20BB7);
for (let i = 0; i < text.length; i++) {
console.log(text[i]);
}
for (let i of text) {
console.log(i);
}
str.length
//获取字符串长度
string.length
str.charAt()
//返回指定位置的字符
str.charAt(index) //string
str.charCodeAt()
//返回指定位置的'字符'的 Unicode 编码
str.charCodeAt(index) //Unicode 编码
String.fromCharCode()
//把 Unicode 值转成字符,然后返回一个字符串
String.fromCharCode(Unicode1, Unicode2, ..., UnicodeX)
str1.concat()
//用于连接两个或多个字符串,返回新的字符串
str1.concat(str2, str3, ..., strX)
str.indexOf()
//返回某个指定的字符串值在字符串中首次出现的位置
str.indexOf(searchvalue,start)
例子: "hello".indexOf('e') //返回该值在字符串中首次出现索引位置,如果没有找到返回-1
str.lastIndexOf()
//返回一个指定的字符串值最后出现的位置
str.lastIndexOf(searchvalue,start)
"hello".lastIndexOf('e') //返回该值在字符串中最后一次出现索引位置,如果没有找到返回-1
str.match()
//在字符串内检索指定的值,或找到一个或多个正则表达式的匹配,返回数组
str.match(regexp)
function is_weixn(){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=="micromessenger") {
return true;
} else {
return false;
}
}
str.replace()
//替换
str.replace(regexp|substr, newSubStr|function)
str.search()
//检索字符串中指定的子字符串,searchvalue可以是正则或字符串,返回索引值,没有找到返回-1
str.search(searchvalue)
str.slice()
//截取某个部分,返回被提取的部分,参数为下标
str.slice(start,end)
str.split()
//分割字符串为数组,返回数组
str.split(separator,limit)
str.substr()
//截取某个部分,返回被提取的部分,第一个参数是下标,第二个参数是位数
str.substr(start,length)
str.substring()
//截取某个部分,返回被提取的部分,参数为下标不支持负数参数
str.substring(from, to)
//截取最后一位返回剩下的
let s = str.substring(0,str.length-1)
str.toUpperCase()
//把字符串转换为大写
str.toUpperCase()
str.toLowerCase()
//把字符串转换为小写
str.toLowerCase()
str.trim()
//去除字符串两边的空白
str.trim()
==ES6语法==
String.fromCodePoint()
//可以识别大于0xFFFF的字符,弥补了String.fromCharCode()方法的不足
String.fromCodePoint(Unicode)
String.fromCodePoint(0x20BB7)
// "ji"
String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y'
// true
str.codePointAt()
//能够正确处理 4 个字节储存的字符,返回一个字符的码点。
str.codePointAt()
//测试一个字符由两个字节还是由四个字节组成的最简单方法
c.codePointAt(0) > 0xFFFF
String.raw()
//可以作为处理模板字符串的基本方法,它会将所有变量替换,而且对斜杠进行转义,方便下一步作为字符串来使用
String.raw()
// `foo${1 + 2}bar`
// 等同于
String.raw({ raw: ['foo', 'bar'] }, 1 + 2) // "foo3bar"
//实现函数:
String.raw = function (strings, ...values) {
let output = '';
let index;
for (index = 0; index < values.length; index++) {
output += strings.raw[index] + values[index];
}
output += strings.raw[index]
return output;
}
str.includes()
//返回布尔值,表示字符串中是否包含参数字符串
str.includes(s)
str.startsWith()
//返回布尔值,表示参数字符串是否在原字符串的头部
str.startsWith(s)
str.endsWith()
//返回布尔值,表示参数字符串是否在原字符串的尾部
str.endsWith(s)
str.repeat()
//方法返回一个新字符串,表示将原字符串重复n次
str.repeat(n)
str.padStart()
//用于头部补全
str.padStart(index,s)
str.padEnd()
//用于尾部补全
str.padEnd(index,s)
str.trimStart()
//消除字符串头部的空格,返回新字符串
str.trimStart()
str.trimEnd()
//消除尾部的空格,返回新字符串
str.trimEnd()
str.matchAll
可以一次性取出所有匹配。不过,它返回的是一个遍历器(Iterator),而不是数组。
let str = `<ul>
<li>
<a>aaa</a>
<p>bbbb</p>
</li>
<li>
<a>ccc</a>
<p>dddd</p>
</li>
</ul>`
const reg = /<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/sg;
const res = str.matchAll(reg)
console.log([...res]);