字符串
字符串
字符串的介绍
字符串也是一个数据结构(串),将同样的内容串在一块。因为在对应的js里面字符串属于一个值类型(值类型是常量 常量是不能变)。字符串是不能改变的。结合昨天提到的数据结构里面串也是一个存储结构,作为存储结构增删改查的方法(字符串的增删改查 不能针对于本身 而是返回一个新的字符串)
字符串的声明
值类型赋值
varstr="hello";
以new关键词声明(引用了对应的值的地址)
开辟了两个空间,一般不用此方法
var str=new string("ABC");
//引用了空值的地址
ES6新增 字符串模板
var a='bule';
var str=`is ${a}`;//esc下面的这个键 解析${}以变量来解析
console.log(str);//is bule
new string()和stirng()的区别
- new String是构建一个String对象 (引用数据类型 有地址指向的)
- String 单纯的将对应的传进入的参数转为string类型(值类型)
字符串的属性
属性
length属性:返回字符串的长度(包含空格、换行)
var str = 'a b'
console.log(str.length)//3
通过下标获取对应的字符串(下标从0开始)
var str = 'abc'
console.log(str[0]) //a
字符串的比较
'a' > 2 //转成数字比较
'3' > '20' // 首字符比较
'a' > 'b' // 字母越靠后越大
'a' > 'A' // 小写字母大于大写字母
'a' > '2'
-
字符串比较的时候,首字符比较,首字符相等,第二个字符比较,以此类推
-
字母比较的时候,是转成阿斯克码进行比较的
小写字母大于大写字母
字母越靠后,越大( z>a )
字符串的字母比字符串的数字大
字符串的方法
其中支持正则的方法有search查找,replace替换,split分割,match匹配
通过下标获取字符串(char字符)
charAt(下标)
var str='dhsk';
str.charAt(0);//返回d
charCodeAt(ASCI码)
var str='adsvjd'
str.charCodeAt(0)//返回97
通过字符串找下标
indexOf:获取某个字符串第一次出现的位置,如果没有,返回-1
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:获取某个字符串最后一次出现的位置。如果没有,返回-1
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方法
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
}
//lastIndexOf
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>0;i--){
var s = ''
for(var j=index;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())
去除字符串两边的空格(trim() )内部空格不会去除
补充
Math对象的常用函数
| 函数 | 说明 |
|---|---|
| Math.round(num) | 四舍五入 |
| Math.random() | 返回0-1的随机数 |
| Math.max(num1,num2) | 返回较大数 |
| Math.min(num1,num2) | 返回较小数 |
| Math.abs(num) | 绝对值 |
| Math.ceil(num) | 向上取整 |
| Math.floor(num) | 向下取整 |
| Math.pow(x,y) | x的y次方 |
| Math.sqrt(num) | 开平方 |
| Math.PI | π |

浙公网安备 33010602011771号