JavaScript中内置对象--字符串对象

一、通过构造函数创建字符串:new String()

二、目的:字符串本身的不可逆性导致重新赋值会在内存开辟新的空间,造成内存的浪费!

三、获取字符串中单个的字符:

1、通过索引
2、charAt() 参数是索引

四、拼接字符串:

1、通过+号
2、concat() 参数一般是字符串

五、字符串的截取:

1、substring(start,end)参数都是索引,从start开始截取到end结束,包含start不包含end。
不会改变原字符串的大小,如果只有一个参数start从start开始到结束,返回新字符串
2、substr(start,length)参数是索引和长度,从start开始截取length个,
不会改变原字符串的大小,如果只有一个参数start从start开始到结束,返回新字符串

六、字符串的位置:

1、indexOf() 获取对应字符的索引值,如果有相同的字符,从前往后数第一个字符,如果没有返回-1
2、lastIndexOf() 获取对应字符的索引值,如果有相同的字符,从后往前数第一个字符,如果没有返回-1

七、去掉字符串左右的空格

trim()

八、检索字符串中指定的子字符串,返回子字符串的初始字符的位置,没有返回-1

search()

九、替换子字符串,返回新字符串

replace(old,new)

十、分割字符串

split()返回的是一个数组。数组的元素就是以参数的分割的

    var str = 'web前端'
    str = 'java后端'
    console.log(typeof str) //string
    
    var strObj = new String('web前端+移动端')
    console.log(strObj)
    console.log(typeof strObj) //object
    console.log(strObj.length) //9
    console.log(strObj + str) //web前端+移动端java后端

    //三、
    console.log(strObj[3]) //前
    console.log(strObj.charAt(3)) //前
    console.log(strObj.charAt(7)) //动
    //四、
    console.log(strObj.concat('学习周期是4-5个月')) //web前端+移动端学习周期是4-5个月
    console.log(strObj.concat(false)) //web前端+移动端false   
    //五、
    var new1 = strObj.substring(3, 5)
    console.log(new1) //前端
    var new1 = strObj.substring(3)
    console.log(new1) //前端+移动端
    console.log(strObj) //String{'web前端+移动端'}
    var new1 = strObj.substr(3, 5)
    console.log(new1) //前端+移动
    var new1 = strObj.substr(3)
    console.log(new1) //前端+移动端
    console.log(strObj) //String{'web前端+移动端'}

    //六、
    console.log(strObj.indexOf('前'))
    console.log(strObj.indexOf('端')) //4
    console.log(strObj.indexOf('A')) //-1
    console.log(strObj.lastIndexOf('端')) //8
    //七、
    var strPhone = ' 13021891410 '
    // strPhone.trim()
    console.log(strPhone) // 13021891410 
    console.log(strPhone.trim()) //13021891410
    console.log(strPhone.trim().length) //11
    //八、
    console.log(strObj.search('web')) //0
    console.log(strObj.search('前端+')) //3
    console.log(strObj.search('前端')) //3
    console.log(strObj.search('前')) //3
    console.log(strObj.search('前移动')) //-1
    //九、
    var new1 = strObj.replace('web', 'java')
    console.log(new1) //java前端+移动端
    var new1 = strObj.replace('端', 'duan').replace('端', 'duan')
    console.log(new1) //web前duan+移动duan
    //十、
    var arr = strObj.split()
    console.log(arr) //['web前端+移动端']
    var arr = strObj.split('+')
    console.log(arr) //['web前端','移动端']
    var arr = strObj.split('端')
    console.log(arr) //['web前','+移动','']
    // 3、 查找指定字符是否在以上字符串中存在,如:i,c ,b等
    var str = new String('abaasdffggghhjjkkgfddsssss3444343')
    function checkedStr(item) {
      if (str.indexOf(item) == -1) {
        console.log(item + '不存在')
      } else {
        console.log(item + '存在')
      }
    }
    checkedStr('i')
    checkedStr('c')
    checkedStr('b')
    // 5、截取指定开始位置到结束位置的字符串,如:取得1-5的字符串
    console.log(str.substring(1, 5)) //baas
    console.log(str.slice(1, 5)) //baas
    // 6、找出以上字符串中出现次数最多的字符和出现的次数   s  6次
    /* 
        思路:
          a、创建一个空对象
          b、遍历字符串
          c、让每个子字符当做空对象的属性名.如果没有该属性属性值是undefined
          d、遍历对象
    
    */
    var str = new String('abaasdffggghhjjkkgfddsssss3444343')
    var obj = {}
    /*  obj = {
      a: 1,
    } */
    for (var i = 0; i < str.length; i++) {
      // console.log(str.charAt(i))
      // 当i=0时   str.charAt(i)="a"   obj[str.charAt(i)]=undefined
      // 当i=2时    str.charAt(i)="a"  obj[str.charAt(i)]=1
      // obj[str.charAt(i)]//undefined
      if (obj[str.charAt(i)]) {
        //  if语句返回为false的六种情况:0 "" NaN false null undefined
        obj[str.charAt(i)]++
      } else {
        // 出现一次,就让其字符当做该对象的属性名
        obj[str.charAt(i)] = 1
      }
    }
    for (x in obj) {
      console.log('子字符串' + x + '出现的次数是:' + obj[x] + '次')
    }
    // 如果一个对象没有该属性,此属性值为undefined
    var car = {}
    console.log(car.color) //undefined
    console.log(car.a) //undefined
    console.log(car.b) //undefined
    console.log(car.c) //undefined
    // 7/遍历字符串,并将遍历出的字符两头添加符号“@”输出至当前的文档页面
    var strNew = ''
    for (var i = 0; i < str.length; i++) {
      if (i == 0) {
        strNew = '@' + str[i] + '@'
      } else {
        strNew = str[i].concat('@')
      }

      document.write(strNew)
    }
    // 字符串转数组  split()
    // 数组转字符串  join() :如果没有参数元素以逗号分隔,如果有参数元素以参数分隔
    var arr = ['我', '是', '程', '序', '员']
    var str = arr.join("A")
    console.log(str)

你可能感兴趣的:(javascript,开发语言,ecmascript)