javascript 字符串
1、字符串
概念:在js中所有单引号或者是双引号包括起来的叫做字符串。
字符串的创建方式:
一、通过new运算符创建
二、省略new创建
三、通过常量创建
var str = new String("hello word");
alert(str);
var str = String("hello word");
alert(str);
var str = "hello word";
alert(str);
var str = new String("hello word");
alert(typeof str);//object 对象有属性和函数
2、字符串的属性
length 返回的是当前字符串的个数
【访问字符串的字符】charAt()
【格式】字符串.charAt()
返回值:对应下标的字符
【注】我们可以直接通过字符下标去访问该字符
var str = "hello word";
alert(str.length);//5
var str = "hello word";
alert(str.charAt(1));//e
alert(str[1]);//e
【注】ECMAScrip当中的字符串是不可改变的,也就是说,
字符串一旦创建,它们的值就不能改变,要改变某个
变量保存的字符串,首先要销毁原来的字符串,
然后再用另一个包含新值的字符串填充该变量。
【注】+ 可以作为字符串的拼接符。
var str = "hello";
str [1]= "x";
alert(str);//hello
str = "hxllo";
alert(str);//hxllo
var str = ("hello"+"world");
alert(str);//helloworld
sub字符串显示为下标。
sup字符串显示为上标。
document.write("hello".sub()+"world".sup());
charCodeAt
【格式】字符串.charCodeAt(下标)
返回值:返回字符串中对应下标字符的ASCII码值
var str = "hello";
alert(str.charCodeAt(1)); //101
String.fromCharCode()
【格式】String.fromCharCode(ASCII值);
参数:ASCII码值,个数任意
返回值:ASCII码对应的字符串
var str = String.fromCharCode(97,98,99);
alert(str);//abc
concat()
【格式】字符串1.concat(字符串2);
返回值:拼接后的字符,生成新字符串
【注】一般情况下很少用,使用最多的字符串拼接符是 +
var str1 = "hello";
var str2 = "word";
var str = str1.concat(str2);
alert(str);//helloword
alert(str1);//helle
3、字符串查找
index0f( )
【格式】字符串.index0f(子串,开始查找的位置) ;
返回值:如果在字符串中查找到了子串第一次出现的位置,返回子串出现的位置
,否则没有查找到返回0。
var str = "abcabcabcabc";
alert(str.indexOf("abc",1));//3
lastIndex0f( )
【格式】字符串.lastIndex0f(子串);
返回值:子串在字符串中最后一次出现的位置,如果没有,返回-1。
var str = "abcabcabc";
alert(str.lastIndexOf("abc", 1));//0
lastIndexOf()
【格式】字符串. lastIndexOf(子串);
返回值:子串在字符串中最后出现的位置,如果没有,返回-1
var str = "abcabcabc";
alert(str.lastIndexOf("abc"));//6
search() 参数可以是表达式
"abc" /abc/ig
【注】正则表达式可以添加修饰符,i代表的是大小写,g代表全局匹配。
var str = "Abcabcabcabc";
alert(str.search(/abc/i));//0
replace
【格式】字符串.replce(匹配的字符串/正则表达式,替换成的新字符)
返回值:替换完成以后生成的新字符串
想替换所有符合条件字符串,必须使用正则表达式完成。
var str = "how Are are you";
alert(str.replace("are","old are"));//how Are old are you
alert(str.replace(/are/ig,"old are"));//how old are old are you
substring()
【格式】字符串,substring(start, end);
作用:字符串提取,在指定范围内,提取字符串,生成新字符串。
返回值:生成的新字符串。[注] 不包含结束位置的。
var str = "helloworld";
alert (str .substring(2, 4));//ll
split
【格式】字符串.split(分割符,生成的数组的长度);
返回值:通过分割符,分割成的装有子串的数组。
【注】
1、分割符,整体。
2、会分割出空字符串
3、如果分割符是空字符""那么我们字符串会分割成单个字符
4、字符串=>数组split 数组=>字符串join
var str = "this is a box";
alert (str.split(" ",2));//this,is
alert (str.split(" "));//this is a box
alert (str.split(" "));//this,is,a,box
alert (str.split(""));//t,h,i,s, ,i,s, ,a, ,b,o,x
alert(str);//this is a box
var str = "this is a box";
var arr= str.split("");
alert(arr);//t,h,i,s, ,i,s, ,a, ,b,o,x
alert(arr.join("="));//t=h=i=s= =i=s= =a= =b=o=x
toLowerCase() 全小写
toUpperCase() 全大写
var str = "hello world";
alert(str.toLowerCase());//hello world
alert(str.toUpperCase());//HELLO WORLD
4、ECMA
ECMA标准 ECMA
ECMA5 第五版
严格模式
【注】字面理解即在这种严格模式下,浏览器会对Js的要求更加苛刻
"use strict"
写在哪个作用域下,这个作用域下所有的代码都遵从严格模式。
【注】不要轻易的在全局范围开头增加"use strict",建议在作用域内使用。
function m1(){
max=10;//如果在给变量赋值时,没有使用var声明变量,那当全局变量进行处理。
}
m1();
alert(max);//10
function m1(){
"use strict";
max=10;//如果在给变量赋值时,没有使用var声明变量,那当全局变量进行处理。
}
m1();
alert(max);//报错
5、新增数组方法
indexOf()数组
【格式】数组.indexOf(元素,index);
[注]使用方法和字符串的方式一致
var arr = [20,10,30,50,40,40,30,60];
alert(arr.indexOf(30));//2
alert(arr.indexOf(30,3));//6
forEachh() 遍历数组
【格式】数组forEach(function(item,index,arry){
intem 当前遍历的元素
index 当前遍历的下标
arry 当前数组
})
var arr = [10,20,30];
arr.forEach(function(item,index,array){
alert(item+","+index+","+array+",");
}) //10,0,10,20,30,
//20,1,10,20,30,
//30,2,10,20,30,
var arr = [10,20,30];
arr.forEach(alert);//10 20 30
map 映射 遍历---操作---返回
var arr = [10,20,30,40];
var newArr = arr.map(function(item,index,array){
return item + 2;
})
alert(newArr);//12,22,32,42
reduce 归并
var arr = [10,20,30,40,50];
var res=arr.reduce(function(pre,next,index,array){
//pre上一次遍return后面的值。next当前遍历的元素.
alert(pre+","+next);
return pre + next;
})
alert(res);//150
filter 过滤
var res = [10,20,30,40,50].filter(function(item,index,array){
return item>30;
})
alert(res);//40,50
some 某些
判断return后面的条件是否成立,如果成立返回true,否则返回false。
[注]如果匹配成功返回true 后面不再进行遍历了。
var arr= [10,20,30,40,50];
var res = arr.some(function(item,index,array){
return item == 30;//判断数组中是否存30,
//判断return后面的表达式,在当前数组是否成立,如果成立true,否则false。
})
alert(res);//true
every 每一个
和some一样,但是要求每一项都符合,才返回true,
只要有一项不符合就返回false。
【注】如果断有元素不符合条件,返回false。直接终止循环。
var arr= [10,20,30,40,50];
var res = arr.every(function(item,index,array){
return item >30;
})
alert(res);//false