位置: 编程技术 - 正文

解析JavaScript中的字符串类型与字符编码支持(javascript解析器)

编辑:rootadmin

推荐整理分享解析JavaScript中的字符串类型与字符编码支持(javascript解析器),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js解析url参数的方法,javascript解析html,javascript如何解析json,javascript解析引擎,javascript解析字符串,js解析jwt,js解析机制,js解析机制,内容如对您有帮助,希望把文章链接给更多的朋友!

定义字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。

单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。

上面两个都是合法的字符串。

如果要在单引号字符串的内部,使用单引号(或者在双引号字符串的内部,使用双引号),就必须在内部的单引号(或者双引号)前面加上反斜杠,用来转义。

由于HTML语言的属性值使用双引号,所以很多项目约定JavaScript语言的字符串只使用单引号,本教程就遵守这个约定。当然,只使用双引号也完全可以。重要的是,坚持使用一种风格,不要两种风格混合。

字符串默认只能写在一行内,分成多行将会报错。

上面代码将一个字符串分成三行,JavaScript就会报错。

如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。

上面代码表示,加了反斜杠以后,原来写在一行的字符串,可以分成多行书写。但是,输出的时候还是单行,效果与写在同一行完全一样。注意,反斜杠的后面必须是换行符,而不能有其他字符(比如空格),否则会报错。

连接运算符(+)可以连接多个单行字符串,将长字符串拆成多行书写,输出的时候也是单行。

如果想输出多行字符串,有一种利用多行注释的变通方法。

上面的例子中,输出的字符串就是多行。

转义反斜杠()在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。

需要用反斜杠转义的特殊字符,主要有下面这些:

null(u) b 后退键(u) f 换页符(uC) n 换行符(uA) r 回车键(uD) t 制表符(u) v 垂直制表符(uB) ' 单引号(u) " 双引号(u) 反斜杠(uC)

上面这些字符前面加上反斜杠,都表示特殊含义。

上面代码中,n表示换行,输出的时候就分成了两行。

反斜杠还有三种特殊用法。

(1)HHH

反斜杠后面紧跟三个八进制数(到),代表一个字符。HHH对应该字符的Unicode码点,比如表示版权符号。显然,这种方法只能输出种字符。

(2)xHH

x后面紧跟两个十六进制数(到FF),代表一个字符。HH对应该字符的Unicode码点,比如xA9表示版权符号。这种方法也只能输出种字符。

(3)uXXXX

u后面紧跟四个十六进制数(到FFFF),代表一个字符。HHHH对应该字符的Unicode码点,比如uA9表示版权符号。

解析JavaScript中的字符串类型与字符编码支持(javascript解析器)

下面是这三种字符特殊写法的例子。

如果在非特殊字符前面使用反斜杠,则反斜杠会被省略。

上面代码中,a是一个正常字符,前面加反斜杠没有特殊含义,反斜杠会被自动省略。

如果字符串的正常内容之中,需要包含反斜杠,则反斜杠前面需要再加一个反斜杠,用来对自身转义。

字符串与数组字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)。

如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined。

但是,字符串与数组的相似性仅此而已。实际上,无法改变字符串之中的单个字符。

上面代码表示,字符串内部的单个字符无法改变和增删,这些操作会默默地失败。

字符串之所以类似于字符数组,实际是由于对字符串进行方括号运算时,字符串会自动转换为一个字符串对象。

length属性length属性返回字符串的长度,该属性也是无法改变的。

上面代码表示字符串的length属性无法改变,但是不会报错。

字符集JavaScript使用Unicode字符集,也就是说在JavaScript内部,所有字符都用Unicode表示。

不仅JavaScript内部使用Unicode储存字符,而且还可以直接在程序中使用Unicode,所有字符都可以写成”uxxxx”的形式,其中xxxx代表该字符的Unicode编码。比如,uA9代表版权符号。

每个字符在JavaScript内部都是以位(即2个字节)的UTF-格式储存。也就是说,JavaScript的单位字符长度固定为位长度,即2个字节。

但是,UTF-有两种长度:对于U+到U+FFFF之间的字符,长度为位(即2个字节);对于U+到U+FFFF之间的字符,长度为位(即4个字节),而且前两个字节在0xD到0xDBFF之间,后两个字节在0xDC到0xDFFF之间。举例来说,U+1D对应的字符为&#;,它写成UTF-就是0xD 0xDF。浏览器会正确将这四个字节识别为一个字符,但是JavaScript内部的字符长度总是固定为位,会把这四个字节视为两个字符。

上面代码说明,对于于U+到U+FFFF之间的字符,JavaScript总是视为两个字符(字符的length属性为2),用来匹配单个字符的正则表达式会失败(JavaScript认为这里不止一个字符),charAt方法无法返回单个字符,charCodeAt方法返回每个字节对应的十进制值。

所以处理的时候,必须把这一点考虑在内。对于4个字节的Unicode字符,假定C是字符的Unicode编号,H是前两个字节,L是后两个字节,则它们之间的换算关系如下。

下面的正则表达式可以识别所有UTF-字符。

由于JavaScript引擎(严格说是ES5规格)不能自动识别辅助平面(编号大于0xFFFF)的Unicode字符,导致所有字符串处理函数遇到这类字符,都会产生错误的结果。如果要完成字符串相关操作,就必须判断字符是否落在0xD到0xDFFF这个区间。

下面是能够正确处理字符串遍历的函数。

替换(String.prototype.replace)、截取子字符串(String.prototype.substring, String.prototype.slice)等其他字符串操作,都必须做类似的处理。

Base转码Base是一种编码方法,可以将任意字符转成可打印字符。使用这种编码方法,主要不是为了加密,而是为了不出现特殊字符,简化程序的处理。

JavaScript原生提供两个Base相关方法。

btoa():字符串或二进制值转为Base编码 atob():Base编码转为原来的编码

js选择器全面解析 原生JS选择器有getElementById、getElementsByName、getElementsByTagName和getElementsByClassName这四个,下面我就一个一个介绍这四个选择器的用法。1.getElementById(通过ID获

关于JS 预解释的相关理解 1、JS中的内存空间分为两种:栈内存、堆内存栈内存:提供JS代码执行的环境;存储基本数据类型的值;-全局作用域或者私有的作用域其实都是栈内存堆内

js改变css样式的三种方法推荐 共用代码:divid="div"thisisadiv/divvardiv=document.getElementById('div');第一种:用cssTextdiv.style.cssText='width:px;height:px;border:1pxredsolid;';第二种:用setProperty()div.sty

标签: javascript解析器

本文链接地址:https://www.jiuchutong.com/biancheng/370145.html 转载请保留说明!

上一篇:JavaScript程序中实现继承特性的方式总结(javascript程序代码)

下一篇:js选择器全面解析(jsclass选择器)

  • 公司出售厂房需要交哪些税
  • 运动手环的税收分类编码是
  • 消费税的三种计税方法及各自的计算公式
  • 待转销项税额是几级科目
  • 建筑施工企业增值税税率是多少
  • 个人保险怎么办理
  • 社团组织缴纳的社保
  • 维修企业主营项目有哪些
  • 哪些固定资产不需要计提折旧
  • 进项税超期怎么办
  • 怎么让银行同意商转公
  • 房地产企业销售未完工产品预计毛利率
  • 行政事业单位会计的工作内容
  • 公司产品中请别人开发的软件怎么会计处理?
  • 外贸企业零退税怎么算
  • 债转股的税收政策
  • 付款时收到应收票据会计分录怎么做?
  • 零税率发票如何抵扣
  • 计提应付利息编制记账凭证用什么原始凭证?
  • 超市买的东西开什么发票
  • 公司的电话费计入什么科目
  • 专票地址不对可以重开吗
  • 税后利润分配需要计提吗
  • 建账时的库存怎么做账
  • 若依前后端分离需要准备啥
  • ptssvc.exe - ptssvc是什么进程 有什么用
  • 红冲暂估需要附件吗
  • 为员工租赁房屋产生的租赁费可以抵扣增值税和所得税吗
  • 手机短信是哪一年开始的
  • noads.exe - noads是什么进程 有什么用
  • yii gridview
  • 在建工程计提减值准备计入什么科目
  • 文心一言 VS ChatGPT
  • 政府补助收入是免税收入还是不征税收入
  • 社会团体税收政策
  • 不抵扣的发票需要认证吗
  • 已认证未抵扣完的进项
  • 购买项目用设备计入什么科目
  • 个人如何办理营业执照年检
  • 减免增值税的账务处理是什么
  • 发票备注栏必须写吗
  • mssqlserver数据能删吗
  • 公司购买新车怎么入账
  • 利润分配未分配利润是净利润吗
  • 客户送我东西怎么办
  • 车辆购置税如何账务处理
  • 股权转让的账务怎么处理 会计分录
  • 盈余公积分配现金股利会影响留存收益吗
  • 增值税专用发票怎么开
  • 两家公司的钱混着用怎么做账
  • 账务核对包括账表核对吗
  • 会计凭证审核标准有哪些
  • 收到投资款怎么做凭证
  • sql server中的文件位置可以很灵活
  • windows2008 64位系统下MySQL 5.7绿色版的安装教程
  • sql空值用什么表示
  • mysql_info
  • win10预览版退回正式版
  • 笔记本上安装软件怎么弄
  • 什么叫脚本错误
  • window系统怎么复制粘贴
  • 系统引导程序出错了如何修复
  • ubuntu 21.10安装
  • linux扩大文件系统
  • html文件怎么用ie浏览器打开
  • Node.js中的什么模块是用于处理文件和目录的
  • mare的用法
  • 使用ssh登录远程服务器有两种方法
  • Linux 下mysql通过存储过程实现批量生成记录
  • 国家税务总局网站官网福建税务局
  • 化妆品的消费税率为
  • 税控系统技术维护费抵税怎么申报
  • 第十三个人
  • 国家税务局发票真伪查验平台
  • 荆州市税务局现任名单
  • 浅谈新时代劳动教育答案
  • 为什么医保的钱可以取出来
  • 种植业税收优惠政策2023
  • 法规处职责要点和底线清单
  • 国税局地点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设