JavaScript中的字符串


字符串的概述:

字符串也是一个数据结构(串),将同样的内容串在一块。因为在对应的js里面字符串属于一个值类型(值类型是常量 常量是不能变)。字符串是不能改变的。结合昨天提到的数据结构里面串也是一个存储结构,作为存储结构增删改查的方法(字符串的增删改查 不能针对于本身 而是返回一个新的字符串)

字符串的声明:

1.值类型赋值

var str = "hello world"

2.以new关键词声明(引用了对应的值的地址)

var str = new String("abc"); //引用了空值的地址

ES6新增 字符串模板

var a = 'jack'
var str = `hello string ${a}` //esc下面的这个键 解析${} 以变量来解析
console.log(str); //hello string jack

new String() 和 String() 区别:

  • new String是构建一个String对象 (引用数据类型 有地址指向的)
  • String 单纯的将对应的传进入的参数转为string类型(值类型)

字符串的属性:

length属性   返回字符串的长度(包含空格及换行)

var str = 'a b'
console.log(str.length)//3

通过下标来获取对应的字符串

var str = 'abc'
console.log(str[0]) //a

字符串的方法(返回新的字符串)

通过下标找字符串(char 字符)

charAt(下标)

var str = 'abc'
str.charAt(0) //返回的是a

charCodeAt (ACSII码)

var str = 'abc'
str.charCodeAt(0) //返回的是97

通过字符串找下标(找不到返回-1 找的到返回对应的下标值 number(第一次出现的))

indexOf

var str = 'abc'
console.log(str.indexOf('ab')) //返回的下标0
console.log(str.indexOf('d')) //找不到返回-1
//可以有俩个参数 第一个参数为 对应需要查询的字符串 第二个参数为 开始查找的下标
console.log(str.indexOf('b',2)) //从下标2开始找 找第一个出现b的位置 返回-1
var str = 'abbbccde'
console.log(str.indexOf('b',2)) //从下标2开始找 找第一个出现b的位置 2

lastIndexOf

console.log(str.lastIndexOf('b')) //3
console.log(str.lastIndexOf('b',0)) //-1 从0的位置往前找
console.log(str.lastIndexOf('b',4)) //3
//也就是说默认的情况下 对应的后面的下标可以省略 str.length-1

自定义函数实现对应的indexOf方法及对应的lastIndexOf方法

//实现一下对应的indexOf方法
var searchStr = "abcdefabcde"
function indexOf(str,index){
  if(!index){ //当前如果是undefined的值
    index = 0 //默认为0
  }
  //得到str的长度
  var len = str.length
  //这个5是表示当前的字符串的总长度
  for(var i=index;i<searchStr.length-len;i++){
    var s = ''
    for(var j=0;j<len;j++){
      s+=searchStr[i+j]
    }
    if(s==str){
      return i
    }
  }
  return -1
}
function lastIndexOf(str,index){
  if(!index && index!=0){ //当前如果是undefined的值 或者不为0
    index = searchStr.length-1 //默认为最后一个
  }
  //得到str的长度
  var len = str.length
  //这个5是表示当前的字符串的总长度
  for(var i=index;i>=len;i--){
    var s = ''
    for(var j=len-1;j>=0;j--){
      s+=searchStr[i-j]
    }
    if(s==str){
      return i
    }
  }
  return -1
}

search 方法(和indexOf一样 支持正则表达式)

var str = 'abc'
console.log(str.search(/ab/)) //0 /ab/正则表达式
console.log(str.search(/ab/,0)) //从0的位置开始找 匹配ab的内容

静态方法(通过构造方法名直接调用的叫做静态方法 他是对应的static修饰的)

fromCharCode 将对应的ascii码转为字符串

var str = String.fromCharCode(97) //返回的是一个字符串
console.log(str) //a

concat 将多个字符串转为连接成一个字符串返回

var str = 'hello'.concat('world')
console.log(str)//hello world

支持正则的方法(4个)

search 查找(找到返回下标 没找到返回-1)

replace 替换 (将找到的第一个字符串替换成一个新的字符串)

var str = 'abca'
var str1 = str.replace('a','hello')//将a替换成hello
console.log(str1)

split 分割(返回数组)

//分割 成为一个数组 split 数组变成字符串 join (默认以,)
var str = '1,2,3'
//默认不是以,作为分割 默认不分割 直接填入到数组
console.log(str.split()); //['1,2,3']
console.log(str.split(',')); //['1','2','3']

match 匹配(返回数组)

//match 返回一个数组 (匹配的内容)
var str = "abcacc"
//默认只找第一个匹配的 加入到数组
var arr = str.match('a')
console.log(arr);

截取的方法

substring(开始的下标,结束的下标)

substr(开始的下标,个数)

//截取的方法 substring substr
var str = "abcdef"
//substring(开始的下标,结束的下标) 不包含结束的下标
console.log(str.substring(1));//bcdef
console.log(str.substring(1,3));//截取不包含最后一个下标 (默认不填str.length)bc
// substr(开始的下标,截取的个数)
console.log(str.substr(1));//默认的情况是截取到最后 bcdef
console.log(str.substr(1,3));//从下标1开始截取 截取个数为3个 bcd

转大写 (toUpperCase)

var str = 'abcA'
console.log(str.toUpperCase())

转小写 (toLowercase)

var str = 'abcA'
console.log(str.toLowerCase())

总结

  • string是不能改变的(常量)
  • string的方法返回的都是一个新的字符串
  • string的length属性是只读的(不能赋值)读取对应的字符串的长度
  • 字符串可以通过下标进行访问(string[i])
  • 字符串方法 charAt charCodeAt
  • 搜索 indexOf lastIndexOf search
  • 支持正则的方法 search replace split match
  • 截取的方法 substring substr
  • 转大写和小写 toUpperCase和 toLowerCase
  • 静态方法 fromCharCode 根据ascii转为字符串

Math类(数学类 一起和数学计算相关的方法都在这个里面且这个方法都是静态方法)

属性

  • PI 3.1415926

  • E 科学计算法

方法

  1. random 随机数

  2. round 四舍五入

  3. floor 向下取整

  4. ceil 向上取整

  5. pow 取幂次方

  6. sqrt 开平方

  7. abs 取绝对值

  8. max 最大值

  9. min 最小值

  10. ….

原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/278255.html

(0)
上一篇 2022年8月1日
下一篇 2022年8月1日

相关推荐

发表回复

登录后才能评论