String

88 阅读1分钟

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]);