JavaScript的字符串就是用''
或""
括起来的字符表示。
查看字符串中所有的方法dir(String.protoTYpe)
1,charAt(index) && chartCodeAt(index)
返回指定索引的字符
str.charAt(index) 返回指定索引位置的字符,和str[索引]的区别在于,当指定索引不存在的时候,中括号返回的是undefined,而charAt获取的是空字符串。
chartCodeAt(index) 在charAt基础上,把获取的字符变为Unicode编码值(对应ASCii)
45-57 :0-9
65-90 :A-Z
97-122:a-z
2,字符串的三种截取方式substr() && substring() && slice()
str.substr(n,m)
从索引n开始,截取m个字符。
str.substring(n,m)
从索引n开始,截取到索引为m处(不包含m)。
str.slice(n,m)
和substring语法一样,区别在于能使用负数做索引。
3,字符串的大小写转换toUpperCase() && toLowerCase()
toUpperCase()
把一个字符串全部转换为大写。
toLowerCase()
把一个字符串全部转换为小写。
4,获取指定字符所在的索引位置str.indexOf("?") $$ str.indexLastOf("?")
str.indexOf("?")
获取“?”第一次出现的索引位置。
str.indexLastOf("?")
获取?最后一次出现时索引位置
案例:判断字符串中是否包含某个字符。
if(str.indexOf('?')>=0){
// 条件成立就是指包含 某个字符
}
5,字符串的拆分,分割str.split('&')
返回一个字符串数组。按照某一个字符把字符串拆分成数组中的某一项。
String.split() 执行的操作与 Array.join 执行的操作是相反的。
并且支持正则匹配/?|=/g
6,字符串替换的方法str.replace()
执行一次智能替换一次,一般需要和正则配合使用。
str.replace('/被替换的字符/g','要替换成的字符')
7,去除空格str.trim() && str.strimLeft() && str.strimRight()
去除字符串首位的空格,去除开始的空格,去除结尾空格。
需要特别注意的是,字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果:
写个案例1:请把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT']
,输出:['Adam', 'Lisa', 'Bart']。
var arr = ['adam', 'LISA', 'barT'];
function normalize(arr) {
function toCase(x){
return x[0].toUpperCase()+x.substring(1).toLowerCase();
}
return arr.map(toCase);
}
案例2:把字符串"13579"
转换为数字类型的13579
var str = "13579";
function toNumber(str){
var arr = str.split(''); // 这里把字符串拆分数组['1','3','5','7','9']
var arr2 = arr.map(function(x){return x-0});// 这里把字符串转换为数字类型
var resoult = arr2.reduce(function(x,y){return x*10+y}) ;
return resoult;
}
案例3:通过利用map()
把字符串转换为整数。
var arr =['1','2','3'];
function toNumber(x){
return parseInt(x);
}
var resoult =arr.map(toNumber);
//
实际上Array.map()函数在调用时接收3个参数 currentValue,index,array.
而parseInt实际可以接收两个参数,所以在小明的方法中parseInt(currentValue,index);
当parseInt第二个传入的参数小于2时则返回NaN. 所以小明得到了NaN.
案例4:去除数组中相同的元素。使用indexOf()
var arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
var res = arr.filter(function (element, index, self) {
return self.indexOf(element) === index;
});
*
去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了
*
案例来源廖雪峰老师的教程