一、String对象:字符串。用单引号('') 或双引号("")括起来的字符序列
(1)创建方式:
a、字面量:'' 或 “”
let s1 = 'abcd'let s2 = "蜗牛学苑" let s3 = "abcde'def'" //注意单引号和双引号的嵌套(不能交叉)
b、使用构造函数:new String()
let s4 = new String('西安') //s4是一个字符串对象
(2)字符串的属性:length —— 表示字符串的长度(字符串中字符的个数)
字符串对象名.length
二、String对象的常用方法:字符串名.方法名(【实参】)
(1)charAt( index ):返回字符串中index位置上的字符。参数index代表索引值(下标),若没有找到则返回空
(2)charCodeAt(index):返回字符串中index位置上的字符的Unicode编码
ASCII码:是美国做的字符编码 ('a':97.....)——— 只支持英文字符。表示一个字符使用1个字节(byte),即8个二进制位(bit)
Unicode码:国际标准化组织做的一套编码。表示一个字符使用2个字节,即16个二进制位(bit) —— 支持中文
ISO-8859-1码:不支持中文
GBK:支持中文
GB2312:支持简体中文
(3)concat(字符串):将两个及两个以上的字符串进行连接
(4)endsWith(字符串):判断字符串是否是以给定的子串结尾。是则返回true,不是则返回false
(5)indexOf(子串):返回子串在字符串中首次出现的位置(下标)。若返回-1,表示没有找到子串
(6)lastIndexOf(子串):返回子串在字符串中最后出现的位置(下标)
(7)includes(子串):查找字符串中是否包含指定的子串。若包含返回true,不包含返回false
(8)startsWith(子串):判断字符串是否以给定子串开头。是则返回true,不是则返回false
(9)split(分隔字符):将字符串分割成字符串数组
(10)replace(oldStr,newStr):在字符中查找oldStr第一次出现的位置,并用newStr替换它
(11)substr(start,length):截取字符串中从start开始的连续长度个字符。当参数length省略时,截取从start开始到串末尾的所有字符
(12)substring(start,end):截取start到end之间的子串,不包含end
(13)trim():去掉字符串两端的空白字符
(14)trimEnd():去掉字符串末尾的空白字符
(15)trimStart():去掉字符串前面的空白字符
(16)toLowerCase():将字符串中的所有字母转换为小写字母
(17)toUpperCase():将字符串中的所有字母转换为大写字母
(18)toString():将字符串对象转换成字符串
<script>
let s1 = new String('ABCD')
let s2 = s1.concat('123456')
let s3 = '123456'.concat(s2).concat('######')//将字符进行连接
console.log(s3) //123456ABCD123456######
let s4 = '西安--"大雁塔"'
console.log(s4.charAt(1))//下标对应的字符串 安
let s5 = 'aA 01'
console.log(s5.charCodeAt(3))//unicode码 97 65 32 48
let s6 = '12345678@qq.com'
let flag = s6.endsWith('@qq.com')//判断结尾的字符串是否与给定的相同
console.log(flag) //true
let s7 = '1234abcd1234abcd'
let index = s7.indexOf('ab')//返回ab在字符串中首次出现的位置的下标
console.log(index) //4
let last_index = s7.lastIndexOf('ab')//返回ab在字符串中最后出现的位置的下标
console.log(last_index) //12
let temp = s7.includes('abc')//查找s7中是否含有'abc'
console.log(temp) //true
let idCard = '610527199904183211'
let id = idCard.startsWith('610')//查看字符串是否以指定的子串开头
console.log(id) //true
let s8 = idCard.substr(0,5)//从0下标开始后面5个连续的字符串
console.log(s8) //61052
let s9 = idCard.substr(5)//从5下标开始到结束的字符串
console.log(s9) //7199904183211
let s10 = idCard.substring(5,10)//从5下标开始到下标10的字符串
console.log(s10) //71999
let phone = '187—9168—5642'
let arr = phone.split('—')//将字符串phone分割成数组
console.log(arr) //['187', '9168', '5642']
let id_str = '1,2,3,4,5,6,7,8,9'
let a1 = id_str.split(',')//
console.log(a1) //['1', '2', '3', '4', '5', '6', '7', '8', '9']
console.log(parseInt(a1[0])) //1
let p1 = ' 未央区 '
console.log(p1.length) //9
p1 = p1.trim()//去掉字符串两边的空白字符
console.log(p1.length) //3
let p2 = ' 未央区 '
let p3 = p2.trimEnd()//去掉字符串末尾的空白字符
console.log(p3.length) //6
let p4 = ' 未央区 '
let p5 = p4.trimStart()//去掉字符串前面的空白字符
console.log(p5.length) //6
//toLowerCase 将所有字母转换为小写字母
//toUpperCase 将所有字母转换为大写字母
let str = new String('懒羊羊')
console.log(str) //String {'懒羊羊'}
console.log(str.toString()) //懒羊羊
//将字符串对象转换为原始值
console.log(str.valueOf()) //懒羊羊
</script>
三、字符串的不可变性:指当一个字符串被定义后,它的内容是不变的。虽然通过调用相关函数看似改变了串的内容,实际是在内存中新开辟了一个空间存放新的串
四、练习
1、猜数字游戏。使程序随机生成一个1~10之间的数字,并让用户输入一个数字,判断这两个数的大小,如果用户输入的数字大于随机数,那么提示“你猜大了”,如果用户输入的数字小于随机数,则提示“你猜小了”,如果两个数字相等,就提示“恭喜你,猜对了”,结束程序
<script>
/*
1、猜数字游戏。使程序随机生成一个1~10之间的数字,并让用户输入一个数字,判断这两个数的大小,如果用户输入的数字大于随机数,那么提示“你猜大了”,如果用户输入的数字小于随机数,则提示“你猜小了”,如果两个数字相等,就提示“恭喜你,猜对了”,结束程序
*/
let num1 = Math.trunc((Math.random() * 10 )+ 1)
let num2
while (num2 != num1) {
num2 = +prompt('请输入数组(1~10)')
if (num2 > 10 || num2 < 1) {
console.log('请看清要求')
continue
}
if (num2 > num1) {
console.log('你猜大了')
} else if(num2 < num1){
console.log('你猜小了')
}else {
console.log('恭喜你,猜对了。嫩真棒')
}
}
</script>
2、在对象中保存每个字符即该字符出现的次数
<script>
//在对象中保存每个字符即该字符出现的次数
let str = 'uwgsjhgiuebagjsgfukayagbaygkujbesgug'
let k = {}
for(let i = 0;i < str.length;i++){
let chars = str.charAt(i)
if (k[chars]) {
k[chars]++
} else {
k[chars] = 1
}
}
// console.log(k)
let max = 0
let ch = ''
for(let t in k){ //吧k的值赋给t
if (k[t] > max) {
max = k[t]
ch = t
}
}
console.log(`出现次数最多的字母是${ch}:${max}`)//出现次数最多的字母是g:8
</script>