Js基础---String

184 阅读5分钟

创建

'abc'或String('abc')

注意:new String('abc')创建了一个包装对象,而不是一个字符串量。

常用方法:

* 所有的字符串方法都不会对原字符串修改,都是返回一个新的字符串或结果。

静态方法

String.fromCharCode() :通过一串 Unicode 创建字符串。 

String.fromCodePoint():通过一串 码点 创建字符串。

String.raw():通过模板字符串创建字符串。

------------------------------------------------------------------------------------------------

字符码点

String.prototype.charCodeAt():返回表示给定索引的字符的Unicode的值。

String.prototype.codePointAt():返回使用UTF-16编码的给定位置的值的非负整数。

String.prototype.normalize():返回调用字符串值的Unicode标准化形式。

------------------------------------------------------------------------------------------------

截取

String.prototype.charAt():返回特定位置的字符。

String.prototype.substr():通过指定字符数返回在指定位置开始的字符串中的字符。

String.prototype.substring():返回在字符串中指定两个下标之间的字符。

String.prototype.slice():摘取一个字符串区域,返回一个新的字符串。

String.prototype.split():通过分离字符串成字串,将字符串对象分割成字符串数组。

String.prototype.replace():被用来在正则表达式和字符串直接比较,然后用新的子串来替换被匹配的子串。

String.prototype.trim():从字符串的开始和结尾去除空格。参照部分 ECMAScript 5 标准。

String.prototype.trimStart()

String.prototype.trimLeft():从字符串的左侧去除空格。

String.prototype.trimEnd()

String.prototype.trimRight():从字符串的右侧去除空格。

-----------------------------------------------------------------------------------------------

拼接/补全

String.prototype.concat():连接两个字符串文本,并返回一个新的字符串。

String.prototype.padStart():在当前字符串头部填充指定的字符串, 直到达到指定的长度。 返回一个新的字符串。

String.prototype.padEnd():在当前字符串尾部填充指定的字符串, 直到达到指定的长度。 返回一个新的字符串。

String.prototype.repeat():返回指定重复次数的由元素组成的字符串对象。

------------------------------------------------------------------------------------------------

查询

String.prototype.includes():判断一个字符串里是否包含其他字符串。

String.prototype.startsWith():判断字符串的起始位置是否匹配其他字符串中的字符。

String.prototype.endsWith():判断一个字符串的是否以给定字符串结尾,结果返回布尔值。

String.prototype.indexOf():从字符串对象中返回首个被发现的给定值的索引值,如果没有找到则返回-1。

String.prototype.lastIndexOf():从字符串对象中返回最后一个被发现的给定值的索引值,如果没有找到则返回-1。

String.prototype.search():对正则表达式和指定字符串进行匹配搜索,返回第一个出现的匹配项的下标。

String.prototype.match():使用正则表达式与字符串相比较。

String.prototype.matchAll():返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器。

String.prototype.localeCompare():返回一个数字表示是否引用字符串在排序中位于比较字符串的前面,后面,或者二者相同。

------------------------------------------------------------------------------------------------

大小写转换

String.prototype.toLocaleLowerCase():根据当前区域设置,将符串中的字符转换成小写。对于大多数语言来说,toLowerCase的返回值是一致的。

String.prototype.toLocaleUpperCase():根据当前区域设置,将字符串中的字符转换成大写,对于大多数语言来说,toUpperCase的返回值是一致的。

String.prototype.toLowerCase():将字符串转换成小写并返回。

String.prototype.toUpperCase():将字符串转换成大写并返回。

------------------------------------------------------------------------------------------------

toString()和valueOf()

String.prototype.toString():返回用字符串表示的特定对象。重写 Object.prototype.toString 方法。

String.prototype.valueOf():返回特定对象的原始值。重写 Object.prototype.valueOf 方法。

------------------------------------------------------------------------------------------------

内置迭代器

String.prototype[@@iterator]():返回一个新的迭代器对象,该对象遍历字符串值的索引位                                                        置,将每个索引值作为字符串值返回。

字符串模板(Template literals)

字符串模板用"反引号"表示,即 ` `

基本用法

let num1 = 123,
  num2 = 456;
let temp = `hello ${num1 + num2} world !`;
console.log(temp);    // "hello 579 world !"

标签模板(Tagged templates)

我们一般调用函数的方式是fn(['hello ', 'world'], 999),函数名后用括号包裹参数。而标签模板可以这样写:fn`hello ${args}world` ,函数名后直接跟``。注意,这两种方式的参数是一致的。

// 用于查看传参情况的函数
function fn() {
  console.log(arguments[0])
}
fn`hello ${999}world${666} !`;
// 下图看结果

String​.raw()

谈到模板字符串,不得不谈String对象的一个静态方法:String​.raw()。一般都是以标签函数的方式调用它,即String​.raw`` ,当然,你可以使用普通函数的()方式传参,只不过要按照上面额规则手动转化一下。它的用途是获取一个模板字符串的原始字面量值,简单说就是把所有的反斜杠(\)转义。

String.raw `Hi\u000A!`;      // "Hi\\u000A!"
String.raw `Hi\n${999}!`;    // "Hi\\n999!"
String.raw`\\`;              // "\\\\"

字符编码与字符集

基本概念

  1. 字符,是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
  2. 字库表,是一个相当于所有可读或者可显示字符的数据库,字库表决定了整个字符集能够展现表示的所有字符的范围。其实就是字符的集合
  3. 编码字符集,简称字符集,用一个编码值code point(又称码点)来表示一个字符(即该字符在子库表中的位置),这个值称为字符对应于编码字符集(如:Unicode、ASCII)的序号。
  4. 字符编码,是编码字符集和实际存储数值之间的转换关系。

Json字符串格式化后展示

我们经常需要在代码编辑器中格式化一整行的json字符串为换行显示,方便阅读,代码如下

JSON.stringify(JSON.parse(jsonString), null, '\t');

面试题:

数字千分化

驼峰命名转化

字符串查找

解析 URL Params 为对象

参考:

JavaScript String 对象

String |  MDN

(JS基础)String 类型

22 道高频 JavaScript 手写面试题及答案