1:string类型是字符串的对象包装类型
var stringObject=new String('hello world')
2:继承的valueOf()、toLocaleString()、toString()都返回所表示的基本字符串值
3:length属性,表示字符串中有多少个字符;
4:方法合集
1:字符方法:
(1)charAt():以单字符字符串的形式返回给定位置的那个字符;
(2)charCodeAt():得到的是字符编码
(3)ES5还定义了另外一个访问个别字符的方法;在支持这个方法的浏览器中(IE7以上)。可以使用[数字索引]访问字符串中的特定字符;
var stringValue='hello world'
console.log(stringValue.charAt(1)) //e
console.log(stringValue.charCodeAt(1)) //101
console.log(stringValue[1]) //e
2:字符串操作方法(只是返回新值,对原来的字符串没有任何影响)
(1)concat():用于将一个或者多个字符串拼接起来,返回拼接得到的新字符串
(2)拼接字符串实践中使用更多的还是“+”操作符
var stringValue='hello world'
var newValue=stringValue.concat(' 123',' 456')
console.log(newValue) //hello world 123 456
console.log(stringValue) //hello
(3)slice()第一个参数指定字符串的开始位置,第二个参数指定的是字符串中最后一个字符后面的位置;如果没有指定第二个参数,则将字符串的长度作为结束位置;
(4)substring()第一个参数指定字符串的开始位置,第二个参数指定的是字符串中最后一个字符后面的位置;如果没有指定第二个参数,则将字符串的长度作为结束位置;
传入正数的情况下,上面2个方法返回结果一样;
(5)substr()第一个参数指定字符串的开始位置,第二个参数指定的是返回的字符个数;如果没有指定第二个参数,则将字符串的长度作为结束位置;
再传入负数时;这些方法会不尽相同;
slice()会将传入的2各位负值都与字符串长度相加
substr()会将第一个参数加上字符串长度;第二个负数变成0
substring()会将所有负数变成0
var stringValue='hello world' //11个字符
console.log(stringValue.slice(3)) //lo world
console.log(stringValue.slice(3,7)) //lo w(处于index=7的‘o’没有返回,)
console.log(stringValue.slice(-3)) //rld
console.log(stringValue.slice(3,-4)) //lo w
console.log(stringValue.slice(-3,-4)) //(空字符串)
console.log('*************')
console.log(stringValue.substring(3)) //lo world
console.log(stringValue.substring(3,7)) //lo w(处于index=7的‘o’没有返回,)
console.log(stringValue.substring(-3)) //hello world
console.log(stringValue.substring(3,-7)) //hel
console.log(stringValue.substring(-3,-7)) //(空字符串)
console.log('*************')
console.log(stringValue.substr(3)) //lo world
console.log(stringValue.substr(3,7)) //lo worl
console.log(stringValue.substr(-3)) //rld
console.log(stringValue.substr(3,-4)) //(空字符串)
console.log(stringValue.substr(-3,-4)) //(空字符串)
3:字符串位置的方法
(1)indexOf():从一个字符串中搜索指定的子字符串,返回子字符串的位置(如果没有找到该字符串,返回-1);从字符串的开头向后搜索
(2)lastIndexOf():从一个字符串中搜索指定的子字符串,返回子字符串的位置(如果没有找到该字符串,返回-1);从字符串的末尾向前搜索
如果要搜索的字符串再该字符串只有一个,那么上面2个函数返回的值一样;
如果接受第二个参数,indexOf()会从指定的位置向后搜索;lastIndexOf()会从指定的位置向前搜索;
var stringValue='hello world' //11个字符
console.log(stringValue.indexOf('o')) //4
console.log(stringValue.lastIndexOf('o')) //7
console.log(stringValue.indexOf('o',6)) //7
console.log(stringValue.lastIndexOf('o',6)) //4
4:trim方法
这个方法会创建一个字符串的副本,删除前置,后缀的所有空格,然后返回结果;
var stringValue=' hello world ' //
console.log(stringValue.trim()) //hello world
console.log(stringValue) // hello world
5:字符串大小写转换方法:原字符串不变
toUpperCase(),toLowerCase()是经典的方法,但是有些语言(土耳其语言会为unicode大小写转换为特殊的规则,这个时候必须用下面2个方法)
toLocaleUpperCase(),toLocaleLowerCase()) 是针对地区的方法,一般情况下不知道自己的代码将在那种语言环境运行的情况下,还是针对地区的方法更加稳妥一些;
var stringValue='hello world' //
console.log(stringValue.toLocaleUpperCase()) //HELLO WORLD
// console.log(stringValue) //hello world
console.log(stringValue.toLocaleLowerCase()) //hello world
// console.log(stringValue) //hello world
console.log(stringValue.toUpperCase()) //HELLO WORLD
// console.log(stringValue) //hello world
console.log(stringValue.toLowerCase()) //hello world
// console.log(stringValue) //hello world
6:字符串的模式匹配方法:
(1)match()方法:本质上跟regexp的exec方法相同,只接受一个参数,要么是一个正则表达式,要么是一个regexp对象
var text='cat, bat, sat, fat'
var pattern=/.at/
var matches=text.match(pattern)
console.log(matches) //console.log(pattern.exec(text))
console.log(matches.index)
console.log(matches[0])
console.log(pattern.lastIndex)
(2)search()方法,接受的参数跟上面的方法一样,返回字符串中第一个匹配项的索引;如果没有找到则返回-1;始终从字符串的开头向后查找;原字符串不变
var text='cat, bat, sat, fat'
console.log(text.search(/at/)) //1
(3)replace()方法:接受的2个参数都可以是regexp对象或者一个字符串;如果第一个字符是字符串,那么只会替换第一个字符串;如果想要替换所有字符串,唯一的办法就是第一个参数提供正则表达式;而且要指定全局(g)标志;
var text='cat, bat, sat, fat'
var result=text.replace('at','ond')
console.log(text) //cat, bat, sat, fat
console.log(result) //cond, bat, sat, fat
var result2=text.replace(/at/g,'ond')
console.log(text) //cat, bat, sat, fat
console.log(result2) //cond, bond, sond, fond
B: 如果第二个参数是字符串,那么嗨可以使用一些特殊的字符序列,将正则表达式操作得到的值插入到结果字符串中;
每个以‘at’结尾的单词都被替换了,替换结果是‘world’后跟一对(),里面是被字符序列$1所替换的单词;
var text='cat, bat, sat, fat'
var result=text.replace(/(.at)/g,'world($1)')
console.log(result) //world(cat), world(bat), world(sat), world(fat)
C:第二个参数还可以是函数
(4)split()方法:基于指定的分隔符,将一个字符串分割成多个字符串;并将结果放在一个数组中;分隔符可以是一个字符串,也可以是一个Regexp对象(这个方法不会将字符串看成正则表达式)。split()方法可以接受可选的第二个参数,用于指定数组的大小,以便确保返回的数组不会超过既定大小;
var colorText='red,blue,green,yellow'
var colors1=colorText.split(',')
console.log(colors1)
var colors2=colorText.split(',',2)
console.log(colors2)
var colors3=colorText.split(/[^\,]+/)
console.log(colors3)
第三个前后有2个空格的原因:通过正则表达式指定的分隔符出现在了字符串的开头跟末尾(对于这个解释我不懂);
对于split()中正则表达式的支持因浏览器而异,尽管对于简单模式没有什么区别;但是对于未发现匹配以及带有捕获组的模式,匹配行为就打不相同了;因此再使用正则表达式时,一定要在浏览器中做些测试;
7:localeCompare()方法:这个方法比较2个字符串,返回下列值中的一个:
(1)如果字符串在字母表中应该排在字符串参数之前。则返回一个负数(大多数情况下是-1,具体指同样要看实现而定)
(2)如果字符串=字符串参数,则返回0;
(3)如果字符串在字母表中应该排在字符串参数之后,则返回一个正数(大多数情况下是1,具体指同样要看实现而定)
这个方法的与众不同的地方在于,实现所支持的地区决定了这个方法的行为:比如:美国以英语作为ES实现的标准语言;因此就是区分大小写的,于是大写字母排在小写字母前面就成了一项决定性的比较规则,但是其他地区恐怕就不是这种情况了;
8:fromCharCode()方法:接受一个或者多个字符编码,然后将它们转化成一个字符串;
跟charCodeAt()执行的是相反的操作;
console.log(String.fromCharCode(104,101,108,108,111)) //hello
9:html()方法
早期的web浏览器提供商察觉到了使用JS动态格式化HTML的需求,于是,这些诶提供商就扩展了标准,实现了一些专门用于简化常见HTML格式化任务的方法;尽量不要使用这些方法,