前面一章主要複習了數組的全部方法,今天咱們開始來研究一下字符串的方法吧。es6
關於字符串新建這相對比較簡單,我就界面上面幾種方式,固然還有不少方式啊。推薦使用數組字面量的方式來新建字符串。正則表達式
var str = "hello world";
var str = new String("wo shi klivitam");
var str = ["wo","shi","shui"].toString();
var str = ["wo","shi","shui"].join("");
console.log(str.length) // 9
複製代碼
關於這個,其實也有不少的做用,來看下面一段代碼:數組
var str = "hello world";
for(var i=0;i<str.length;i++){
console.log("charAt:",str.charAt(i),",charCodeAt:",str.charCodeAt(i));
}
// charAt: h ,charCodeAt: 104
// charAt: e ,charCodeAt: 101
// charAt: l ,charCodeAt: 108
// charAt: l ,charCodeAt: 108
// charAt: o ,charCodeAt: 111
// charAt: ,charCodeAt: 32
// charAt: w ,charCodeAt: 119
// charAt: o ,charCodeAt: 111
// charAt: r ,charCodeAt: 114
// charAt: l ,charCodeAt: 108
// charAt: d ,charCodeAt: 100
複製代碼
上面咱們能夠查詢到,char的unicode值,此時咱們再用這些unicode的值利用fromCharCode來建立String,以下面代碼所示:bash
var str = String.fromCharCode(104,101,108,108,111);
console.log(str); // hello
複製代碼
關於字符串的查找就相對比較簡單了,來看下面一段代碼:ui
var str = "hello world";
console.log(str.indexOf("l")); // 2
console.log(str.lastIndexOf("l")); // 9
console.log(str.search(/l/)); // 2
console.log(str.indexOf("k")); // -1
var str="The rain in SPAIN stays mainly in the plain";
var n=str.match(/ain/g); // [ 'ain', 'ain', 'ain' ]
複製代碼
關於正則表達式這一塊,我今晚在這篇文章寫完以後 另開出一章來寫this
大小寫轉換的一個方法,/後面的方法和前面的方法 大同小異,我上網查詢了一下,可能在土耳其啥的語言上有點不同。具體的效果看下面一段代碼es5
var str = "hello WORLD";
console.log(str.toUpperCase()) // HELLO WORLD
console.log(str.toLowerCase()) // hello world
複製代碼
var str = "hello";
var srr1 ="world";
var str2 = str.concat(" ","world");
console.log(str2); // hello world
複製代碼
如上所示,該方法接收n個字符串,會將全部字符串組合成一個新的字符串。spa
var str = "hello world";
var str1 = str.replace("l","L");
console.log(str1) // heLlo world
console.log(str) // hello world
複製代碼
這裏值得咱們注意的是:replace只能替換第一個字符串的位置,作Android的都是知道,Android裏面有一個replaceAll方法,可是js沒有實現,js應該如何實現呢?code
var str = "hello world";
var str1 = str.replace(/l/g,"L");
console.log(str1) // heLLo worLd
console.log(str) // hello world
複製代碼
從上面代碼咱們能夠知道,replace第一個參數實際上是正則表達式,關於正則,跟前面同樣 我今晚會寫一篇文章來複習這個內容,這裏就再也不講解了。對象
var str = "hello world";
console.log(str.slice(0,5)); // hello
console.log(str.slice(-5)); // world
console.log(str.slice(0,100)); // hello world
複製代碼
這裏值得咱們注意的點是: 一、 該方法須要兩個參數 start 和 end 二、 若是end大於字符串的長度,end默認爲字符串的長度 三、 若是存在負數,則代碼字符串長度加上負數爲該參數
var str = "hello world";
var arr1 = str.split(""); // [ 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd' ]
var arr2 = str.split("o");// [ 'hell', ' w', 'rld' ]
var arr3 = str.split("",3) // [ 'h', 'e', 'l' ]
複製代碼
這裏值得注意的是:aplit接收兩個參數,第一個參數是表示從該參數指定的地方開始分割,第二個參數是指定返回數組的長度。
var str = "hello world";
console.log(str.substring(0,5)); // hello
console.log(str.substring(0,1000)); // hello world
複製代碼
主力值得注意的是:substring 方法須要兩個參數 start 和 end,,返回包含在轉換結果字符串中從 start 位置字符一直到(但不包括)end 位置的字符(或若是 end 是 undefined,就到字符串末尾的一個子串。
var str1 = " hello world 1 ";
var str2 = str1.trim()
console.log(str2); // hello world 1
console.log(str1); // hello world 1
複製代碼
值得注意的是,該方法只能去除開頭和結尾的空格,不能去除全部的空格哦。
let str = 'Hello world!';
str.startsWith('Hello') // true
str.endsWith('!') // true
str.includes('o') // true
str.startsWith('world', 6) // true
str.endsWith('Hello', 5) // true
str.includes('Hello', 6) // false
複製代碼
從上面咱們能夠發現,這三個方法都能接收兩個參數,第一個是用來匹配的參數 第二個則是用來定位到查找的位置。但endsWith的行爲與其餘兩個方法有所不一樣。它針對前n個字符,而其餘兩個方法針對從第n個位置直到字符串結束。
'hello'.repeat(2); // "hellohello"
'na'.repeat(0); // ""
'he'.repeat(2.9); // "hehe"
'hello'.repeat(Infinity); // RangeError
'hello'.repeat(-1); // RangeError
'na'.repeat(NaN) // ""
'na'.repeat('na') // ""
'na'.repeat('3') // "nanana"
複製代碼
這裏值得咱們注意的是: 一、 參數若是是小數,會被取整 二、 若是repeat的參數是負數或者Infinity,會報錯 三、 參數NaN等同於 0。 四、 參數是字符串,則會先轉換成數字。
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
'xxx'.padStart(2, 'ab') // 'xxx'
'xxx'.padEnd(2, 'ab') // 'xxx'
'x'.padStart(4) // ' x'
'x'.padEnd(4) // 'x '
複製代碼
這裏值得注意的是: 一、該方法接收兩個參數,第一個參數是字符串補全生效的最大長度,第二個參數是用來補全的字符串 當第二個參數被省略的時候,默認用空格填充 二、 若是原字符串的長度,等於或大於最大長度,則字符串補全不生效,返回原字符串。 三、 若是用來補全的字符串與原字符串,二者的長度之和超過了最大長度,則會截去超出位數的補全字符串。
var fristStr = "dadasdas"
var secondStr = "bbjbj"
var str = fristStr +secondStr;
複製代碼
在es6中,其實新定義了一種字符串拼接的方式:模版字符串``
模板字符串(template string)是加強版的字符串,用反引號(`)標識。它能夠看成普通字符串使用,也能夠用來定義多行字符串,或者在字符串中嵌入變量。
上面的代碼咱們就能夠簡單的寫成:
var str = `${fristStr} +${secondStr}`;
複製代碼
設置裏面都還能夠作一些運算
var a1 = 1;
var a2 = 2;
console.log(result) // a1+a2 = 3
複製代碼
關於模版字符串,確定還有更多、更細緻的用法,我這裏就不作具體的舉例了。怎麼說了,有些奧妙只有本身在實際使用中才能領會的。
關於字符串的使用,這一篇文章把我在開發中常常能用到的一些方法都作了一次總結 怎麼說呢?也沒幾個方法。掌握、記憶起來仍是比較簡單的,其實最難的無非就是正則表達式哪一塊,如今中午也沒什麼時間了,我就很少說了 先睡會兒覺 等今晚下班了,再來細細的探究所謂的正則表達式吧。