1.如何声明一个string类型的数据?
var str1 = ''; var str1 = new String('字符串内容'); 这两种方法的本质是相同的
第一种声明也是通过第二种实现的,这里我们可以看出字符串其实就是String对象的一个实例
2. string类型有哪些方法?
concat: 连接字符串
var s1="a"; var s2="b"; var s3="c"; console.log(s1.concat(s2,s3));//abc 这里输出的结果就是abc 等价于 s1+s2+s3
indexOf(str, fromIndex): 找到字符串中匹配项的索引值
var testString = 'coding';
var a1= testString.indexOf('c');var a2 = testString.indexOf('d');
var a3 = testString.indexOf('ing');
var a4 = testString.indexOf('ccc');
console.log(a1);console.log(a2);console.log(a3);console.log(a4);
//这里输出的结果分别是 0 2 3 -1注意点: 如果没有找到匹配项时会返回 -1
另外他可以选择传入第二个参数: fromIndex
var b1 = testString.indexOf('d',1); //就是从下标1开始寻找d字符
var b2 = testString.indexOf('c',3); //从下表3开始找c 找不到所以返回 -1
var b3 = testString.indexOf('od',-4); // 负数都会被自动转换成 0
console.log(b1);console.log(b2);console.log(b3);注意点: 传入的负数会被转换成0,限制开始地址后会忽略前面的内容
charAt(index): 返回指定索引位置的字符
console.log(testString.charAt(1)); //c
console.log(testString.charAt(1000)); //'' 空字符串
console.log(testString.charAt(-1)); //空字符注意点: 如果出现索引越界返回的是空字符串
substr(fromIndex, length): 获取部分字符串
console.log(testString.substr(1,1)); //o 标识从下标1开始取一位 就是第二位
console.log(testString.substr(1,1000)); //oding 超出下标取剩下的所有
console.log(testString.substr(2)); // ding 不穿第二个参数也是取剩下的所有
console.log(testString.substr(-1,1)); // g 反向截取时 -1代表倒数第一个
console.log(testString.substr(-3,2)); // in 反向截取的过程还是从左到右的从倒数的方式截取coding 中的od
console.log(testString.substr(-5,2));注意点: 反向截取的起点是-1,不传入第二个参数默认是到最后,超出下标会取剩下的所有
substring(startIndex,endIndex): 获取部分字符串
console.log(testString.substring(1,2)); // o 从下标1开始取 到下标2 但是不取endIndex上的字符
console.log(testString.substring(1)); // oding 不传参取所有
console.log(testString.substring(2,2)); //返回空字符串 ''
console.log(teststring.substring(-1,1)); // c 会自动把参数中的负数转换为0
console.log(teststring.substring(2,1)); // o 如果startIndex > endIndex 会把他们的位置交换 注意点: 如果省略个数,则自动获取后面所有,若startIndex或者endIndex为负,则会被替换为0。若startIndex = endIndex,则返回空字符串。若startIndex > endIndex,则执行方法时,两个值会被交换.
slice(startIndex,endIndex): 获取部分字符串
console.log(testString.slice(0,2)); //co
console.log(testString.slice(2)); //ding
console.log(testString.slice(-1,3)); // 这里的-1 等价为 -1+testString.length
console.log(testString.slice(1-1)); // 同理注意点: 如果 start end为负,将它作为 length + start处理,此处 length 为数组的长度。与substring的区分点在于 负数的处理和 silce可以对数组操作 但是substring不行
split(','): 按给定字符串分割,返回分割后的多个字符串组成的数组
var ssr = '213141';
console.log(ssr.split('1')); //['2','3','4','']
var sr = 'a,b,c';
console.log(sr.split(',')); //['a','b','c']split()可以结合正则表达式进行使用
var teststring = 'I love coding';
console.log(teststring.split(/\s/)); // ['I','love','coding']
console.log(teststring.split(/\s/)[2]); // 'love'大小写转换:
console.log(teststring.toLowerCase()); //i love coding
console.log(teststring.toUpperCase()); //I LOVE CODINGreplace: 字符替换
console.log(teststring.replace('o','O')); // I lOve coding 只替换了第一个
console.log(teststring.replace(/o/,'O')); // I lOve coding 使用正则表达式
console.log(teststring.replace(/o/g,'O')); // I lOve cOding 加上global属性 就全匹配替换了
var newstring = 'alibaba is a big company';
console.log(newstring.replace(/(alibaba)\s*(is)/g, '$1 $2 rich. it $2'));
//alibaba is rich.it is a big company 使用$1 $2 来替换正则表达式中用括号括起来的段落 并且顺序是
// 可以改变使用的
console.log(newstring.replace(/(alibaba)\s*(is)/g, '$&'))
// alibaba is a big company a big company $&代表正则表达式匹配到的内容var mystring = '老婆饼';
console.log(mystring.replace(/饼/,'$& != $^')); // 老婆饼 != 老婆 $^匹配文本的左边部分
console.log(mystring.replace(/老婆/,"$& is $'")); // 老婆饼 is 饼 $' 匹配文本的右边部分
//replace的第二个参数还可以是函数
var teststring = 'aabbs';
teststring.replace(/(a)(b)/g,function(){
console.log(arguments);
})
// 输出结果是 ['ab','a','b',2,'aabbs'];
// 可以得到function本身得到的参数依次是
//1.正则匹配字符 2.分组匹配内容 3.匹配字符的下表 4.源字符串
//头字母转换为大写其他字母转换为小写
var str1 = 'aAa ccC Fff';
str1 = str1.replace(/\b\w+\b/g,function(word){
return word.substring(0,1).toUpperCase()+ word.substring(1).toLowerCase;
})
console.log(str1);只是自学过程中的小小复习, 如果有问题或者错误请立马喷我 Thanks♪(・ω・)ノ