字符串构造器方法说起
字符串作为基本的信息交流的桥梁,几乎被所有的编程语言所实现
多数开发者几乎每天都在和字符串打交道
JavaScript通过自动装箱字符串字面量为String对象,更加简化了字符串的使用
字符串作为基本的信息交流的桥梁,几乎被所有的编程语言所实现(然而c、c++没有提供)。
多数开发者几乎每天都在和字符串打交道,语言内置的String模块,极大地提升了开发者的效率。
JavaScript通过自动装箱字符串字面量为String对象,自然地继承了String.prototype的所有方法,更加简化了字符串的使用。
截止ES6,字符串共包含31个标准的API方法,其中有些方法出镜率较高,需要摸透原理;有些方法之间相似度较高,需要仔细分辨;甚至有些方法执行效率较低,应当尽量少的使用。下面将从String构造器方法说起,逐步帮助你掌握字符串。
String构造器方法
fromCharCode
fromCharCode()方法返回使用指定的Unicode序列创建的字符串,也就是说传入Unicode序列,返回基于此创建的字符串。
语法:fromCharCode(num1, num2,…),传入的参数均为数字。
如下这是一个简单的例子,将返回 ABC、abc、*、+、- 和 /:
<pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;">`String.fromCharCode(65, 66, 67); // "ABC"
String.fromCharCode(97, 98, 99); // "abc"
String.fromCharCode(42); // "*"
String.fromCharCode(43); // "+"
String.fromCharCode(45); // "-"
String.fromCharCode(47); // "/"`</pre>
看起来fromCharCode像是满足了需求,但实际上由于js语言设计时的先天不足(只能处理UCS-2编码,即所有字符都是2个字节,无法处理4字节字符),通过该方法并不能返回一个4字节的字符,为了弥补这个缺陷,ES6新增了fromCodePoint方法,请往下看。
fromCodePoint(ES6)
fromCodePoint()方法基于ECMAScript 2015(ES6)规范,作用和语法同fromCharCode方法,该方法主要扩展了对4字节字符的支持。
<pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;">`// "" 是一个4字节字符,我们先看下它的数字形式
"".codePointAt(); // 119558
//调用fromCharCode解析之,返回乱码
String.fromCharCode(119558); // "팆"
//调用fromCodePoint解析之,正常解析
String.fromCodePoint(119558); // ""`</pre>
除了扩展对4字节的支持外,fromCodePoint还规范了错误处理,只要是无效的Unicode编码,就会抛出错误RangeError: Invalid code point...,这就意味着,只要不是符合Unicode字符范围的正整数(Unicode最多可容纳1114112个码位),均会抛出错误。
<pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;">`String.fromCodePoint('abc'); // RangeError: Invalid code point NaN
String.fromCodePoint(Infinity); // RangeError: Invalid code point Infinity
String.fromCodePoint(-1.23); // RangeError: Invalid code point -1.23`</pre>
注:进一步了解Unicode编码,推荐这篇文章:浅谈文字编码和Unicode(下):
如需在老的浏览器中使用该方法,请参考Polyfill
#Polyfill-浏览器补丁。
raw(ES6)
raw() 方法基于ECMAScript 2015(ES6)规范,它是一个模板字符串的标签函数,作用类似于Python的r和C#的@字符串前缀,都是用来获取一个模板字符串的原始字面量。
语法:
String.raw(callSite, …substitutions),callSite即模板字符串的“调用点对象”,…substitutions表示任意个内插表达式对应的值,这里理解起来相当拗口,下面我将通俗的讲解它。
如下是python的字符串前缀r:
<p><pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"># 防止特殊字符串被转义
print r'anbtc' # 打印出来依然是 "anbtc"
python中常用于正则表达式
regExp = r'(?
发表评论
热门文章
Spimes主题专为博客、自媒体、资讯类的网站设计....
一款个人简历主题,可以简单搭建一下,具体也比较简单....
仿制主题,Typecho博客主题,昼夜双版设计,可....
用于作品展示、资源下载,行业垂直性网站、个人博客,....
尘集杂货铺和官网1t5-cn
11月11日
[已回复]
希望主题和播放器能支持SQLite数据库,AI能多个讯飞星火