String 字符串

重要通知

类目简介

基本概况

JavaScript 中的字符串是一串Unicode 字符序列。它们是一串UTF-16编码单元的序列,每一个编码单元由一个 16 位二进制数表示。每一个Unicode字符由一个或两个编码单元来表示。

字符串字节

字符串宽度

String对象

创建字符串

let str = new String("Hello World!");  
let str = "Hello World!";  
console.log(str.length);  

计算字符串长度

const str = '';
console.log(str.length);
  • 计算字符串字节
const str = '';
const strArray = str.split('');
let strSize = 0;
for (let i = 0; i < strArray.length; i++) {
  if (strArray[i]charCodeAt(0) < 299) {
    strSize++;
  } else {
    strSize += 2}
}
console.log(strSize);

JavaScript 特殊字符

String 对象方法

String HTML 包装方法

String字符串属性

String.constructor

对创建该对象的函数的引用


String.length

字符串的长度


String.prototype

允许您向对象添加属性和方法


String字符串方法

String.charAt() String.charCodeAt() String.codePointAt() String.concat() String.constructor() String.endsWith() String.fixed() String.includes() String.indexOf() String.lastIndexOf() String.localeCompare() String.match() String.matchAll() String.normalize() String.padEnd() String.padStart() String.repeat() String.replace() String.search() String.slice() String.split() String.startsWith() String.substr() String.substring() String.toLocaleLowerCase() String.toLocaleUpperCase() String.toLowerCase() String.toString() String.toUpperCase() String.trim() String.trimEnd() String.trimLeft() String.trimRight() String.trimStart() String.valueOf() String.Symbol(Symbol.iterator)

String.toString()

返回字符串对象中的字符串值, n 表示进制数, 默认为十进制

console.log(new String("0").charCodeAt().toString(2));

str.valueOf()

返回字符串对象的原始值

var boo = new Boolean(false);
document.write(boo.valueOf());  //输出:false

[String].charAt()

返回字符串中的第index个字符(从0开始),若超出范围,则返回一个空字符串。

let info = str.charAt(3);
console.log(info);  //l

String.codePointAt()


[string].charCodeAt()

返回字符串中的第Index个字符的Unicode码(中文)与ASCII编码(非中文,十进制)。

console.log((' ').charCodeAt(0));  // 32
console.log(('0').charCodeAt(0));  // 48
console.log(('A').charCodeAt(0));  // 65
console.log(('a').charCodeAt(0));  // 97
console.log(('你').charCodeAt(0));  // 20320

String.fromCharCode()

将Unicode编码或ASCII编码转为字符。属于静态方法,由构造函数String()创建,而不是由字符串或字符串对象创建

console.log(String.fromCharCode(20320));  // 你

for(let i = 97; i < 123; i++) {
  console.log(String.fromCharCode(i));  //生成a~z 26个小写字母
}  
for(let i = 65; i < 91; i++){
  console.log(String.fromCharCode(i));  // 生成A~Z 26个大写字母
}

parseInt()

可解析一个字符串,并返回一个整数;如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。


String.normalize()

[String].indexOf()

返回子字符串substr在字符串str中从startindex位置开始第一次出现的位置(默认从0开始),若不存在,返回-1。

  let info = str.indexOf("o");
  console.log(info);  //4

[String].lastIndexOf()

返回子字符串substr在字符串str中startindex位置计算倒数第一次出现的位置(从开头0起,以匹配的最后一个字符位置),若不存在,返回-1。

  let info = str.lastIndexOf("W");
  console.log(info);  //6

[String].match()

返回字符串或正则表达式的匹配,若匹配成功,返回匹配成功的字符串组成的数组,否则返回null。

  let info = str.match("Wor");  //匹配字符串
  let reg1 = str.match(/l/);  //匹配正则
  let reg2 = str.match(/l/g);  //匹配正则

  console.log(info);  //["Wor", index: 6, input: "Hello World", groups: undefined]
  console.log(reg1);  //["l", index: 2, input: "Hello World", groups: undefined]
  console.log(reg2);  //["l", "l", "l"]

[String].matchAll()

ES 提案, 给定一个字符串和一个正则表达式,.matchAll()为所有匹配的匹配对象返回一个迭代器 RegExp:匹配正则;string:匹配字符串

let name = '这是演示字符串';
console.log(name.matchAll());

[String].replace()

以正则表达式或字符串形式匹配内容的结果。

let info = str.replace("World", "You");
let reg = str.replace(/\s/, "A");
console.log(info);  //Hello You
console.log(reg);  //HelloAWorld

//函数
String.replace(reg, functioon() {
  return '';
});

查找字符串或正则表达式相匹配的子字符串,如果在字符串中包含匹配的子字符串,返回子字符串第1次出现在字符串中的位置,从0开始;若不存在,否则返回-1。

  let info = str.search("W");
  let reg = str.search(/\s/);
  console.log(info);  //6
  console.log(reg);  //5

[String].slice()

返回在字符串str中起始位置startindex(包括)与末尾位置endindex(不包括)之间的子字符串,省略endindex则默认为到字符串结尾。

  let info = str.slice(2,4);
  console.log(info);  //ll

[String].substr()

返回字符串str从startindex(包括)位置指定的length长度子字符串。

  let info = str.substr(2,2);
  console.log(info);  //ll

[String].substring()

返回字符串str从startindex(包括)开始到endindex(不包括)结束之间的子字符串,startindex与endindex相等时,返回“”。

  let info = str.(str.substring(2,4));
  console.log(info);  //ll

[String].toLocaleLowercase()

将字符串转换为小写,按照本地方式转换

let info = str.();
console.log(info);  //

[String].toLowerCase()

将字符串转换为小写

let info = str.();
console.log(info);  //

[String].toLocaleUpperCase()

将字符串转换为大写,按照本地方式转换

let info = str.();
console.log(info);  //

[String].toUpperCase()

将字符串转换为大写

let info = str.();
console.log(info);  //

[String].concat()

连接两个或更多字符串,并返回新的字符串

let a = "Hello";
let b = " World!";

console.log(a.concat(b));

str.localeCompare(str1)

用本地特定顺序来比较两个字符串,若str小于str1,返回小于0的数;等于str1,返回0;反之,返回大于0的数

[String].split()

把字符串分割为字符串数组 RegExp | string:分割字符串的正则规则或子字符串规则

console.log(name.split(/\d/g));  //[ '这是演示字符串' ]
console.log(name.split(""));   //[ '这', '是', '演', '示', '字', '符', '串' ]

String.split(regexp, [limit]);
//regexp:字符串或正则表达式
//limit:指定返回数组的最大长度

var str="How are you doing today?"
document.write(str.split(" ") + "<br />")  //输出:How,are,you,doing,today?
document.write(str.split("") + "<br />")  //输出:H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
document.write(str.split(" ",3))  //输出:How,are,you

[string].trim()

从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR等)。

let name = '  这    是演示字符串   ';
console.log(name.trim());

// 兼容旧环境
if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

[string].trimStart()

从字符串的开头删除空格。trimLeft() 是此方法的别名。

  

[string].trimLeft()

[string].trimEnd()

从一个字符串的末端移除空白字符。trimRight() 是这个方法的别名。


[string].trimRight()

String.Symbol()

let name = '这是演示字符串';
console.log(name.);

ES6新增API

模板字符串

let name = ``;

变量和表达式

console.log(`${name}`);
let count = 0;
console.log(`${count + 1}`);

函数

function add() {return 1;}
console.log(`${add()}`);

String.includes()

返回布尔值,判断是否找到参数字符串 string:需要查找的子字符串

let name = '字符串';
console.log(name.includes("符"));  //true

String.startsWith()

返回布尔值,判断参数字符串是否在原字符串的头部 string:需要查找的子字符串

let name = '字符串';
console.log(name.startsWith("字"));  //true

String.endsWith()

返回布尔值,判断参数字符串是否在原字符串的尾部 string:需要查找的子字符串

let name = '字符串';
console.log(name.endsWith("串"));  //true

String.padEnd()

返回新的字符串,表示用参数字符串从尾部(右侧)补全原字符串 minLength:指定生成的字符串的最小长度 string:用来补全的字符串,默认为空格,且空位

console.log("h".padStart(5,"o"));  //hoooo
console.log("h".padStart(5));  //h     
console.log("h".padStart(5).length);  //5

String.padStart()

返回新的字符串,表示用参数字符串从头部(左侧)补全原字符串 minLength:指定生成的字符串的最小长度 string:用来补全的字符串,默认为空格,且空位

console.log("h".padStart(5,"o"));  //ooooh
console.log("h".padStart(5));  //     h
console.log("h".padStart(5).length);  //5

String.repeat()

复制字符串指定次数,并将它们连接在一起返回,n:指定重复次数

let name = '字符串';
console.log(name.repeat(2));  //'字符串字符串'

String HTML 包装方法

HTML 返回包含在相对应的 HTML 标签中的内容,以下方法并非标准方法,所以可能在某些浏览器下不支持

String.anchor(name)

创建 HTML 锚。

String.big()

用大号字体显示字符串。

显示闪动字符串。

String.bold()

使用粗体显示字符串。

String.fixed()

以打字机文本显示字符串。

String.fontcolor()

使用指定的颜色来显示字符串。

String.fontsize()

使用指定的尺寸来显示字符串。

String.italics()

使用斜体显示字符串。

将字符串显示为链接。

String.small()

使用小字号来显示字符串。

String.strike()

用于显示加删除线的字符串。

String.sub()

把字符串显示为下标。

String.sup()

把字符串显示为上标。

疑难困惑

业务场景实践

Last Updated:
Contributors: 709992523