第2章 字符串,字符串模板

ES6字符串棋凳,字符串模板

  es6對字符串新添加了一些方法邪驮,最重要的引入了字符串模板(string template),下面來看看ES6字符串改動。

1.新增方法

  1. startsWith(str[, pos]): 是否已什么字符開始刃唤,pos表示搜索起始位置,不寫默認為0
  2. endsWith(str[, pos]):   是否已什么字符結束白群,pos同上
  3. includes(str[, pos]):   是否包含某個字符
  4. repeat(times):          times表示重復多少次

eg:

let message = "hello world";
message.startsWith("he"); // true
message.startsWith("he", 4); // false

message.endsWith("rld"); // true
message.endsWith(" w", 7) // true

message.includes("or"); // true
message.includes("or", 8); // false

let s = "hello";
s.repeat(0); // ""(empty string)
s.repeat(2); // "hellohello"
// 一般可用于添加縮進
" ".repeat(4); // "    "

2.模板字符串

  模板字符串用backstick表示``(Esc下面那個鍵)尚胞,能夠實現多行,實現替代,標簽模板字符串

1.實現多行

eg:

// ES6之前實現方法
var message = "hello \n\
        world"; // "\n"表示換行轉義帜慢, "\"表示字符串連續(xù)
// 或者
var message = "multiline\nstring";

// ES6模板字符串
var message = `hello
          world`;

2.實現替代

eg:

function total(count, price) {
    console.log(`${count} items cost $${(count * price).toFixed(2)}.`);
}
total(10, 0.25); // 10 items cost $2.50.

3.帶標簽的模板字符串(tagged template string)

表示字符串字面值(literals)模板替代(substitutions)交替出現(interwoven),literals,substitutions均為數組笼裳,literals長度比substitutions大1

tag`${count} items cost $${(count * price).toFixed(2)}.`;
// tag為一個函數名唯卖,可以是任意名稱,下面會講到
   // literals = ["", " items cost $", "."] 第一個為空字符串
// substitutions = ["${count}", "${(count * price).toFixed(2)}"]

tag函數為:

// 交替出現
// substitutions.length === literals.length - 1
function tag(literals, ...substitutions) {
      let result = "";
      for (let i = 0; i < substitutions.length; i++) {
        result += literals[i];
        result += substitutions[i];
      }
     result += literrals[literals.length - 1];
     return result;
}

4.String.raw()標簽模板字符串方法

原生的方法躬柬,將轉義也表示出來拜轨,顯示原始字符串

var message1 = "hello\n world";
console.log(message1); \\ "hello
                       \\ world"

var message2 = "hello\n world";
String.raw(message2); \\ "hello\n world"

3.其他方面的改變

1.正則表達式

1- 新添加"u","y" flags

2- 新添加 flags 屬性,es5沒有

3- 復制可以更改flag

// es5獲取flags
function getFlags(re) {
    var text = re.toString();
    return text.substring(text.lastIndexOf("/") + 1, text.length);
}
var re = /\d/gi;
getFlags(re); // "gi"

// ES6
var re = /\d/gi;
re.source; // "\d"
re.flags; // "gi"

// ES5可以復制正則表達式,但是不能更改flags允青,ES6則可以
var re1 = /[a-z]/gi;
var re2 = new RegExp(re1, "m"); // 在ES5拋出錯誤橄碾,ES6正常

2.增加了對unicode的支持

主要差別在于超出BMP(BASE MULTILINGUAL PLAINS) 字符使用point方法將原來2個字符表示的字符,改為1個字符

// 添加方法
charPointAt(); // es5為charCodeAt()
String.fromPointCode(); // es5的為String.fromCharCode()

總結

  1. 新添加一些方法startsWith(), endsWith(), includes(), repeat()
  2. 添加模板字符串颠锉,及標簽模板字符串(實質是函數)
  3. 正則表達式方面的改動法牲,對unicode的支持及其相應的方法

2016/9/11 12:12:50

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市琼掠,隨后出現的幾起案子拒垃,更是在濱河造成了極大的恐慌,老刑警劉巖瓷蛙,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悼瓮,死亡現場離奇詭異,居然都是意外死亡艰猬,警方通過查閱死者的電腦和手機谤牡,發(fā)現死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姥宝,“玉大人翅萤,你說我怎么就攤上這事±奥” “怎么了套么?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碳蛋。 經常有香客問我胚泌,道長,這世上最難降的妖魔是什么肃弟? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任玷室,我火速辦了婚禮,結果婚禮上笤受,老公的妹妹穿的比我還像新娘穷缤。我一直安慰自己,他們只是感情好箩兽,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布津肛。 她就那樣靜靜地躺著,像睡著了一般汗贫。 火紅的嫁衣襯著肌膚如雪身坐。 梳的紋絲不亂的頭發(fā)上秸脱,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機與錄音部蛇,去河邊找鬼摊唇。 笑死,一個胖子當著我的面吹牛涯鲁,可吹牛的內容都是我干的遏片。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼撮竿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了笔呀?” 一聲冷哼從身側響起幢踏,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎许师,沒想到半個月后房蝉,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡微渠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年搭幻,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逞盆。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡檀蹋,死狀恐怖,靈堂內的尸體忽然破棺而出云芦,到底是詐尸還是另有隱情俯逾,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布舅逸,位于F島的核電站桌肴,受9級特大地震影響,放射性物質發(fā)生泄漏琉历。R本人自食惡果不足惜坠七,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旗笔。 院中可真熱鬧彪置,春花似錦、人聲如沸蝇恶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艘包。三九已至的猛,卻和暖如春耀盗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卦尊。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工叛拷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岂却。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓忿薇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親躏哩。 傳聞我的和親對象是個殘疾皇子署浩,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內容

  • 字符的 Unicode 表示法 codePointAt() String.fromCodePoint() 字符串的...
    卞卞村長L閱讀 752評論 0 0
  • ES6加強了對Unicode的支持,并且擴展了字符串對象扫尺。 字符的Unicode表示法: JavaScript允許...
    呼呼哥閱讀 784評論 0 0
  • 第七章筋栋,新婚之夜 “沒,我就到處走走正驻”兹粒”鬼才信我的話,“哦姑曙?王妃倒是好興致啊襟交,走走就走出我這八王府了,連嫁衣都丟了...
    生活能力九級殘障人士閱讀 2,301評論 2 3
  • 一伤靠、關于生活 自從搬過來和阿響小紅帽夫妻住后捣域,我的生活規(guī)律得以進一步強化,我越發(fā)喜歡現在的生活宴合。 每天早上竟宋,我六點...
    灰鴿1號閱讀 358評論 0 1
  • 一群坑爹的。形纺。丘侠。。
    CohenZhu閱讀 276評論 0 0