js给我们提供了三个引用类型:String/Number/Boolean;
基本数据类型是没有方法可以调用的,但是以下代码让我们知道,当我们定义一个基本数据类型字符串的时候,是可以使用其里面的某些方法的。
var str = 'fdngjgj';
console.log(str.substring(5)); //gj
实际上这里面是分为如下几步的:`var str = new String('fdngjgj'); //先将我们定义的字符串转换成String类型的临时对象,
console.log(str);
var str1 = str.substring(5); //临时对象中有各种方法,可供调用
str = null; //调用完成之后销毁这个临时对象`;
var num1 = Number('18'); //类型转换
console.log(num1); //18
var num1 = new Number(18); //基本包装类型,对象
console.log(typeof num1); //object
console.log(num1); //Number {18}
字符串是不可变的:
var str = 'abc';
str = 'hello'
当我们给str赋值的时候,常量abc不会被修改,仍然在内存中;
重新给字符串赋值,会重新在内存中开辟新的空间
字符常用的方法:
1.1 charAt() :`var str = 'fdngjgj';
console.log(str.charAt(1));` //返回字符串'd',charAt()方法是根据位置(索引)返回该位置初的字符串
charCodeAt() //返回该位置所在数组的ASCII码
str[]z作用于charAt差不多
字符串常用的方法:
concat() //连接两个字符串
var str1 = 'zs';
var str2 = 'ls';
var str3 = str1.concat(str2);
console.log(str3); //zsls
slice(star,end) //从star开始(索引),从end结束(索引),截取字符串,包括star,不包括end
var str = 'qwerasdfzxcv';
console.log(str.slice(1, 6)); //weras
substring(star,end) //和slice类似,从star开始(索引),从end结束(索引),截取字符串,包括star,不包括end
var str = 'jklasdf';
console.log(str.substring(1, 5)); //klas
substr(star,length) //从star开始(索引),截取长度为length的字符
var str = 'qwer1234';
console.log(str.substr(1, 5)); //wer12
indexOf() //从前往后,返回指定内容所在字符串中第一次出现的位置,如果没有返回-1
var str = 'qwer1234';
console.log(str.indexOf('e')); //2
lastIndexOf() //从后往前,返回指定内容所在字符串中第一次出现的位置,如果没有返回-1
var str = 'qwer1234e';
console.log(str.lastIndexOf('e')); //8
toUpperCase() //转换大写
toLowerCase() //转换小写
//驼峰命名法:首字母大写,其余字母小写
var str = 'background';
console.log(str.charAt(0).toUpperCase() + str.substr(1)); //Background
console.log(str.substr(0, 1).toUpperCase() + str.substr(1)); //Background
search() 检索字符串中指定的子字符串,返回子字符串的起始位置,没有的话返回-1
var str = 'Hello Word';
console.log(str.search('w')); //-1
console.log(str.search('W')); //6
console.log(str.search('word')); //-1
console.log(str.search('Word')); //6
console.log(str.search('wehfjgh')); //-1
replace(old,new) 替换字符串,new替换新的字符串old,如果有多个old字符串,只替换一个
var str = 'namenaid';
console.log(str.replace('n', 'q')); //qamenaid
console.log(str.replace('a', 'q')); //nqmenaid
split() 分割字符串,返回一个数组;无参数传递,或者传递的参数在字符串里面没有,默认将原字符串添加到数组里面
var str = 'a-b-c';
console.log(str.split()); //['a-b-c']
console.log(str.split('')); //["a", "-" ,"b" ,"-", "c"]
console.log(str.split('-')); //['a','b','c' ]
console.log(str.split(' ')); //[ "a-b-c"]
console.log(str.split('&&')); //["a-b-c"]
console.log(str.split('a')); //["", "-b-c"]
console.log(str.split('b')); //["a-", "-c"]
var str = 'tian-liang-jiao-yu';
//转换成TianLiangJiaoYu
var strArr = str.split('-');
var newStr1 = ''
for (var i = 0; i < strArr.length; i++) {
var newStr = strArr[i].substr(0, 1).toUpperCase() + strArr[i].substr(1)
newStr1 = newStr1 + newStr
}
console.log(newStr1); //TianLiangJiaoYu
var str = 'tian-liang-jiao-yu';
//转换成TianLiangJiaoYu
var strArr = str.split('-');
for (var i = 0; i < strArr.length; i++) {
strArr[i] = strArr[i].substr(0, 1).toUpperCase() + strArr[i].substr(1)
}
console.log(strArr.join(''));