字符串的生成转换
可以将任何类型的数据都转化成字符串,具体有三种方式
var num=19;
var mystr=num.toString();
var mystr=String(num);
var mystr=""+num;
字符串转化成其他类型
js提供了parseInt()和parseFloat()两个转换函数,Number也可以实现转化
parseInt("1234abc");//1234
parseInt("0xA");//10
parseInt("22.5");//22
parseInt("red");NaN
parseInt("10",2);//2
parseInt("10",8);//8
parseInt("10",10);//10
parseInt("AF",16);//175
parseFloat("1234abc");//1234.0
parseFloat("0xA");//NaN
parseFloat("22.5");//22.5
parseFloat("22.34.5");//22.34
parseFloat("0908");//908
parseFloat("red");//NaN
Number(false);//0
Number(true);//1
NUmber(undefined);//NaN
Number(null);//0
Number("5.5");//5.5
Number("56");//56
Number("5.6.7");//NaN
Number(new Object());//NaN
Number(100);//100
字符的操作
var str="i,love,you,do,you,love,me";
var thechar=str.charAt(8);//获取指定索引上的字符o
var thacharcode=str.charCodeAt(8);//获取指定索引上的字符编码111
字符串的增删改查
//替换
name = "hello world ".trim();//trim()删除字符串的前后空格
name = name.replace("hel","hhh");//replace替换第一个hel成hhh
name = name.replace(/eng/g,"hhh");//replace接受正则表达式,/g替换全部
//查询
var beginindex=name.indexOf("t",name.length-10);//indexOf和lastIndexOf查询字符串的位置,第二个参数表示从哪个索引开始向后搜索。length方法是取字符串的长度,如果没有查询到改字符返回-1.
var endindex=name.laseIndexOf("e",0);
//截取
var substr=name.slice(1,5);//截取子字符串,左闭右开。
name1=name.substring(beginindex,endindex);//slice,substring参数首尾下标,substr为起点下标和长度。都不改变源字符串。
name1=name.substr(-4);//传入负值时,slice将负值加上字符串长度,substr将第一个负值加上字符串长度,第二个负值转化为0,substring都将赋值转化为0.
//substring是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。
//拼接
name1=name+"eya"+1;//使用加号拼接字符串和数据成一个新的字符串
name1=name.concat("yes");//concat函数拼接字符串
//大小写转换
var lowcasestr=name.toLowerCase();//全部转化为小写
var upcasrstr=name.toUpperCase();//全部转化为大写
当接收的参数是负数时,slice会将它字符串的长度与对应的负数相加,结果作为参数;substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;substring则干脆将负参数都直接转换为0。
字符串的比较
比较两个字符串,比较是按照字母表顺序比较的
var one="chicken";
var two="egg";
var first=one.localeCompare(two);//-1表示小于
one.localeCompare("chicken");//0表示等于
two.localeCompare("apple");//1表示大于
字符串分割
var mystr="i,love,you,do,you,love,me";
var substrArray=mystr.split(",");//将字符串转化成数组
var arrayLimited=mystr.split(",",3);//split的第二个参数,表示返回数组的最大长度
正则法则
正则表达式=/pattern/flags,其中flags中的g表示全部,i表示不区分大小写,m表示匹配多行,pattern包含([{^$|)?*+.]}元字符,如果匹配的字符串中包含元字符,使用\转义。
var pattern1=/(.)u/gi;//正则表达式,标志没有,可为空,也可以使用var pattern1= new RegExp("pattern","flags")
if(pattern1.test(name)){
RegExp.input;//原始字符串
RegExp.leftContext;//捕捉到的位置的左边的字符串
RegExp.rightContext;//捕捉到的位置的右边的字符串
RegExp.lastMatch;//返回最近一次与整个正则表达式匹配的字符串
RegExp.lastParen;//返回最近一次捕捉的字符
pattern1.global;//返回正则是否包含全局标志g
}
var matches=pattern1.exec(name);//查询符合要求的字串。maches.index表示查询到的其实下标,matches.input表示输入的字符串,pattern1.lastIndex表示查询到的结束下标,matches[0]表示查找到的第一个匹配项,若匹配为全局模式,则每次返回下一个匹配项。
正则表达式字符
\ 做为转义,即通常在“\”后面的字符不按原来的意义解释,如/b/匹配字符"b",当b前面加了反斜杠后/\b/,转义为匹配一个单词的边界。或者对正则表达式功能字符的还原,如*匹配它前面的元字符0次或者多次,/a*/将匹配a,aa,aaa,加入“\”后,/a\*/将匹配a*
^匹配一个输入或者一行的开头,/^a/匹配“an A”而不匹配“An a”
$匹配一个输入或者一行的结尾,/a$/匹配“An a”,而不匹配“an A”
*匹配前面的元字符0次或者多次,/ba*/将匹配ba,baa,baaa
+匹配前面的元字符1次或者多次,/ba+/将匹配ba,baa,baaa
?匹配前面的元字符0次或1次,/ba?/将匹配b,ba
(x)匹配x保存x在名为$1...$9的变量中
x|y匹配x或y
{n}精确匹配n次
{n,}匹配n次以上
{n.m}匹配n到m次
[xyz]字符集,匹配这个集合中的任意一个字符(或元字符)
[^xyz]不匹配这个集合中的任意一个字符
[\b]匹配一个退格符
\b匹配一个单词的边界
\B匹配一个单词的非边界
\cX X是一个控制符,/cM/匹配ctrl M
\d匹配一个数字符,/\d/=/[0-9]/
\D匹配一个非数字符,/\D/=/[^0-9]/
\n匹配一个换行符
\r匹配一个回车符
\s匹配一个空白字符
\S匹配一个非空白字符
\t匹配一个制表符
\v匹配一个垂直制表符
\w匹配字母数字下划线
\W匹配非字母数字下划线
字符串原型
通过修改字符串的原型,可以为所有字符串添加公共函数
String.prototype.startwith=function(text){
return this.indexOf(text)==0;
}//设置字符串引用的原型,为String类型添加方法