字符串 学习笔记

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

1 (function () { /*
2    line 1
3    line 2
4    line 3    
5 */}).toString().split('\n').slice(1,-1).join('\n')  
// "line 1
// line 2
// line 3"

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

其中,slice()方法可从已有的数组中返回选定的元素。arrayObject.slice(start,end)

参数:start,必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

    end,可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数的负数,那么它规定的是从数组尾部开始算起的元素。

返回值:返回一个新的数组,包含从 start 到 end(不包括该元素)的 arryObject 中的元素。

2. 转义符(反斜杠 \)

\0    null         (\u0000)
\b    后退键       (\u0008)
\f    换页符        (\u000C)
\n    换行符        (\u000A)
\r    回车键        (\u000D)
\t    制表符        (\u0009)
\v    垂直制表符      (\u000B)
\'    单引号         (\u0027)
\"    双引号         (\u0022)
\     反斜杠         (\u005C)

3. 字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)。如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回 undefined 。字符串内部的单个字符无法改变和增删,这些操作(修改丶添加丶删除)会默默失败。字符串也无法直接使用数组的方法,必须通过 call 方法间接使用。

1 var  s = 'hello';
2 s.join(' ')     // TypeError : s.join is not a function
3 Array.prototype.join.call(s, '  ')    // "h e l l o"

上面代码中,如果直接对字符串使用数组的 join 方法,会报错不存在该方法。但是,可以通过 call 方法,间接对字符串使用 join 方法。

不过,由于字符串是只读的,那些会改变原数组的方法,比如 push()丶sort()丶reverse()丶splice()都对字符串无效,只有将字符串显式转为数组后才能使用。

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

5. Base64 是一种编码方法,可以将任意字符转成可打印字符。使用这种编码方法,主要不是为了加密,而是为了不出现特殊字符,简化程序的处理。JavaScript 原生提供了两种 Base64方法:

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

这两个方法不适合 非ASCII 码的字符,会报错。

要将 非ASCII码字符 转为 Base64 编码,必须中间插入一个转码环节,再使用这两个方法。

 1 function b64Encode(str) {
 2      return btoa (encodeURIComponent(str));      
 3 }
 4 
 5 function b64Decode(str) {
 6      return decodeURIComponent(atob(str));       
 7 }
 8 
 9 b64Encode('你好')    // "JUU0JUJEJUEwJUU1JUE1JUJE"
10 b64Decode('JUU0JUJEJUEwJUU1JUE1JUJE')    // "你好"

 

posted on 2017-10-08 22:40  王孟俊  阅读(133)  评论(0编辑  收藏  举报

导航