前面一章主要复习了数组的全部方法,今天咱们开始来研究一下字符串的方法吧。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
复制代码
关于模版字符串,确定还有更多、更细致的用法,我这里就不作具体的举例了。怎么说了,有些奥妙只有本身在实际使用中才能领会的。
关于字符串的使用,这一篇文章把我在开发中常常能用到的一些方法都作了一次总结 怎么说呢?也没几个方法。掌握、记忆起来仍是比较简单的,其实最难的无非就是正则表达式哪一块,如今中午也没什么时间了,我就很少说了 先睡会儿觉 等今晚下班了,再来细细的探究所谓的正则表达式吧。