剛剛在看Javascript犀牛書,看到字符串這一節,平時工作接觸到這方面的不多,想著整理下,以備不時只需。
JavaScript的內置功能之一就是字符串連接,如果用‘+'連接兩個數字,表示兩數相加。但是如果用于字符串,就表示第二個字符加在第一個字符之后。
var num=1+2;console.log(num);var msg='hello'+'world';console.log(msg);
對于字符串來說,除了有length屬性,還有很多其他有用的屬性,如:
var str='hello,world';console.log(str.length);console.log(str.charAt(0)); //第一個字符 console.log(str.charAt(str.length-1)); // 最后一個字符 //substring(starti,endi), 截取 字符串 起始startistartii, 到endi結束,且含頭不含尾,沒有// 如果第二個參數沒有, 就默認截取到最后一個。 console.log(str.substring(1,4));console.log(str.substring(1));//用法同上,為負數時,就是倒數開始算,一個參數含義是倒數幾個。console.log(str.slice(1,4));console.log(str.slice(-3));//字符‘l'首次出現的位置 console.log(str.indexOf('l'));//字符‘l'最后一次出現的位置 console.log(str.lastIndexOf('l'));//在位置下標3之后,首次出現的位置 console.log(str.indexOf('l',3));//用‘,'分割為字符串console.log(str.split(','));// 把str中的小寫h換成大寫Hconsole.log(str.replace('h','H'));//講字符串轉化為大寫console.log(str.toUpperCase());提示:在javascript中字符串本身是固定不變的,上述方法都會返回一個新的字符串值,并不會影響str本身的值
值得注意的是,在ES6中,給字符串增加了很多新的方法,如:
var s = 'Hello world!';// 返回布爾值,表示參數字符串是否在源字符串中的頭部console.log(s.startsWith('Hello')) // true//endsWith():返回布爾值,表示參數字符串是否在源字符串的尾部console.log(s.endsWith('!')) // true// includes()返回布爾值,表示是否找到了參數字符串console.log(s.includes('o')) // true上述的三個方法都支持第二個參數,表示開始搜索的位置
var s = 'Hello world!';console.log(s.startsWith('world', 6)) // trueconsole.log(s.endsWith('Hello', 5))// trueconsole.log(s.includes('Hello', 6)) // false提示:endsWith的行為與其他兩個方法有所不同。它針對前n個字符,而其他兩個方法針對從第n個位置直到字符串結束。
repeat方法返回一個新字符串,表示將原字符串重復n次。
console.log('x'.repeat(3)) // "xxx"console.log('hello'.repeat(2)) // "hellohello"console.log('na'.repeat(0)) // ""參數如果是小數,會被取整。
console.log('na'.repeat(2.9)) // "nana"http://如果repeat的參數是負數或者Infinity,會報錯。console.log('na'.repeat(Infinity))// RangeErrorconsole.log('na'.repeat(-1))// RangeError但是,如果參數是0到-1之間的小數,則等同于0,這是因為會先進行取整運算。0到-1之間的小數,取整以后等于-0,repeat視同為0。
console.log('na'.repeat(-0.9)) // ""http://參數NaN等同于0console.log('na'.repeat(NaN)) // "http://如果repeat的參數是字符串,則會先轉換成數字console.log('na'.repeat('na')) // ""console.log('na'.repeat('3')) // "nanana"ES2017 引入了字符串補全長度的功能。如果某個字符串不夠指定長度,會在頭部或尾部補全。padStart()用于頭部補全,padEnd()用于尾部補全
//padStart和padEnd一共接受兩個參數,第一個參數用來指定字符串的最小長度,第二個參數是用來補全的字符串。console.log('x'.padStart(5, 'ab')) // 'ababx'console.log('x'.padStart(4, 'ab')) // 'abax'console.log('x'.padEnd(5, 'ab')) // 'xabab'console.log('x'.padEnd(4, 'ab')) // 'xaba'//如果原字符串的長度,等于或大于指定的最小長度,則返回原字符串。console.log('xxx'.padStart(2, 'ab')) // 'xxx'console.log('xxx'.padEnd(2, 'ab')) // 'xxx'//如果用來補全的字符串與原字符串,兩者的長度之和超過了指定的最小長度,則會截去超出位數的補全字符串。consoe.log('abc'.padStart(10, '0123456789'))// '0123456abc'//如果省略第二個參數,默認使用空格補全長度。console.log('x'.padStart(4)) // ' x'console.log('x'.padEnd(4)) // 'x '//padStart的常見用途是為數值補全指定位數。下面代碼生成10位的數值字符串。console.log('1'.padStart(10, '0') )// "0000000001"console.log('12'.padStart(10, '0')) // "0000000012"console.log('123456'.padStart(10, '0')) // "0000123456"http://另一個用途是提示字符串格式。console.log('12'.padStart(10, 'YYYY-MM-DD')) // "YYYY-MM-12"console.log('09-12'.padStart(10, 'YYYY-MM-DD'))// "YYYY-09-12"以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!
新聞熱點
疑難解答