String

关于折行

通常我们写很长的文本时,会使用字符串拼接:

let longString = "This is a very long string which needs " +
     "to wrap across multiple lines because " +
     "otherwise my code is unreadable.";

而实际上,可以使用 \ 进行长文本换行:

let longString = "This is a very long string which needs \
    to wrap across multiple lines because \
    otherwise my code is unreadable.";

也可以使用 ES6 的模板字符串:

let longString = `This is a very long string which needs
    to wrap across multiple lines because
    otherwise my code is unreadable.`;

基本字符串和字符串对象的区别

var s_prim = "foo";
var s_obj = new String(s_prim);
console.log(typeof s_prim); // "string"
console.log(typeof s_obj);  // "object"

当使用 eval时,基本字符串和字符串对象也会产生不同的结果。eval 会将基本字符串作为源代码处理; 而字符串对象则被看作对象处理, 返回对象。

var s1 = "2 + 2";
var s2 = new String("2 + 2");
console.log(eval(s1));      // returns the number 4
console.log(eval(s2));      // returns the string "2 + 2"

利用 valueOf 方法,可以将字符串对象转换为其对应的基本字符串。

var s2 = new String("2 + 2");
console.log(eval(s2.valueOf())); // returns the number 4

字符串操作小技巧

从字符串中获取单个字符

通常情况下,我们会使用 charAt 返回某个字符 :

'cat'.charAt(1) // "a"

实际上,字符串是一个类数组对象,可以像操作数组一样操作字符串 :

'cat'[1] // "a"

字符串比较

C 语言中,经常使用 strcmp 函数来比较字符串,在 JavaScript 中,可以直接使用 比较运算符 进行字符串比较 :

var a = "a";
var b = "b";
a < b // true

正则表达式

其实正则表达式也是字符串的一种。

使用 $ 指明括号里的匹配

var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
// "Smith, John"

在多行中使用正则表达式

var s = "Please yes\nmake my day!";
s.match(/yes.*day/);
// Returns null
s.match(/yes[^]*day/);
// Returns 'yes\nmake my day'

字符串代码片段

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress