JavaScript --- String

158 阅读4分钟

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 CODING

replace: 字符替换

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♪(・ω・)ノ