[iOS 从零单排] js基础系列-数据类型之字符串

355 阅读2分钟

字符串

书写方式

与OC不同,JavaScript中的字符串可以用单引号或者双引号表示,并且可以嵌套使用,即单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。但是单引号内部使用单引号的时候需要\转义,双引号内部使用双引号同理。

连接运算符(+)

和swift相似,字符串之间可以用+进行连接。

字符串与数组

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

var s = 'hello';
s[0] // "h"

// 直接对字符串使用方括号运算符
'hello'[1] // "e"

// 如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined。
'abc'[3] // undefined
'abc'[-1] // undefined
'abc'['x'] // undefined

需要注意的是,字符串无法修改(增删改)内部字符

字符集

JavaScript 使用 Unicode 字符集,允许直接在程序中使用 Unicode 码点表示字符,变量名也可以用Unicode 码点表示。输出给用户的时候,所有字符都会转成字面形式。

var s = '\u00A9';
s // "©"

var f\u006F\u006F = 'abc';
foo // "abc"

Base64 转码

所谓 Base64 就是一种编码方法,可以将任意值转成 0~9、A~Z、a-z、+和/这64个字符组成的可打印字符。使用它的主要目的,不是为了加密,而是为了不出现特殊字符,简化程序的处理。 简单介绍一下Base64的2个使用场景:

  1. 文本里面包含一些不可打印的符号,比如 ASCII 码0到31的符号都无法打印出来,这时可以使用 Base64 编码,将它们转成可以打印的字符。
  2. 需要以文本格式传递二进制数据,可以使用 Base64 编码。

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

  • btoa():任意值转为 Base64 编码
  • atob():Base64 编码转为原来的值
var string = 'Hello World!';
btoa(string) // "SGVsbG8gV29ybGQh"
atob('SGVsbG8gV29ybGQh') // "Hello World!"

需要注意的是这两个方法直接传入非ASCII码时会报错,所以需要把非ASCII编码的字符先转码

btoa('你好') // 报错

// 转换方法
function b64Encode(str) {
  return btoa(encodeURIComponent(str));
}

function b64Decode(str) {
  return decodeURIComponent(atob(str));
}

b64Encode('你好') // "JUU0JUJEJUEwJUU1JUE1JUJE"
b64Decode('JUU0JUJEJUEwJUU1JUE1JUJE') // "你好"