day 06 字符串

  • day 06 字符串已关闭评论
  • 155 次浏览
  • A+
所属分类:Web前端
摘要

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


字符串

字符串概述(个人理解字符串就是把一串字符连接在一起,而且他的值类型是常量,所以不能改变,返回值只能返回一个新的字符串)

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

字符串的声明

1.值类型赋值

var str = "hello world"

 

2.以new关键词声明(引用了对应的值的地址)(用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() 区别
1.new String是构建一个String对象 (引用数据类型 有地址指向的)
2.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码)(返回的是这地在这个地址下面字符串的ACSII码)

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

indexOf
lastIndexOf

通过字符串找下标(找不到返回-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 }

  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         }     }注意这个j=len - 1 j>=0 ;j-- 目的是为了让存储的字符串跟我们要求的字符串的顺序一致

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())

Math类(及数学类)
常量 PI 3.1415926
e 科学计数法
方法

random 随机数  (0,1)之间的随机数因为浏览器只有16位,所以会显示0后面16位小数

round 四舍五入  正常的4舍五入

floor 向下取整  往下面取整数

ceil 向上取整  完上面取整数

pow 取幂次方  几的几次幂

sqrt 开平方    几的平方

abs 取绝对值  肯定是个>=0 的数

max 最大值   最大值

min 最小值  最小值

问题?生成随机数的时候,是不是要让生成的随机数的概率相等才叫,生成随机数?