5.6.3 string类型

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格式化任务的方法;尽量不要使用这些方法,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值