根据字符返回位置![](https://i-blog.csdnimg.cn/blog_migrate/f0c0385ddbacbbfad1885d2077d4da85.png)
// E:\itcast\class\php\js\day2\abc.html 截取文件名和格式
let srcc = 'E:\\itcast\\class\\php\\js\\day2\\abc.html'
// 查询最后一个\的位置得到文件名
let lastGIdenx = srcc.lastIndexOf('\\')
// 查询最后一个.的位置得到文件格式
var lastDianIdenx = srcc.lastIndexOf(".")
console.log(srcc.substring(lastGIdenx + 1, lastDianIdenx))
console.log(srcc.substring(lastDianIdenx + 1))
// 1.查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数
let str = 'aboozzf'
// str.indexOf('o')
// 字符出现的次数
let n = 0
// 保存字符出现的位置下标数组
let searchPOSITION = []
// 字符第一次出现的位置
let searchStrIndex = str.indexOf('o')
let searchStrIndex2 = 0
/* function a (str, searchStr, index = 0) {
let searchStrIndex = str.indexOf(searchStr, index)
if (searchStrIndex < 0) {
return
}
if (searchStrIndex) {
n++
searchPOSITION.push(searchStrIndex)
a(str, searchStr, searchStrIndex + 1)
}
}
a('abcoefoxyozzopp', 'o')
console.log('字符出现的次数:' + n) // 字符出现的次数:4
console.log(searchPOSITION, '字符串出现的位置') // [3, 6, 9, 12] 字符串出现的位置 */
// 方法2
/* while (searchStrIndex >= 0) {
searchStrIndex = str.indexOf('o', searchStrIndex + 1)
console.log(searchStrIndex)
} */
根据位置返回字符
// 2.根据位置返回字符(重点)
let uname = 'ws'
console.log(uname.charAt(0)) /'w'/
console.log(uname[0]) /'w'/
// 判断一个字符串 'aooyozzopp' 中出现次数最多的字符,并统计其次数。
let str2 = 'aooxyozzopp'
let obj = {}
for (let i = 0; i < str2.length; i++) {
// 通过charAt(i)获取每一项字符
let key = str2.charAt(i)
// 判断当前对象是否含有该字符Key,如果没有添加字符key属性初始值为1;如果有则该属性值++
if (obj[key]) {
obj[key] += 1
}
else {
obj[key] = 1
}
}
console.log(obj)
let maxKeyNumber = 0
let maxKey = ''
for (let i in obj) {
// 遍历每一属性的值,如果大于最大值则更替最大值并且保存最大值的Key
if (obj[i] > maxKeyNumber) {
maxKeyNumber = obj[i]
maxKey = i
}
}
console.log('出现最多的key为:' + maxKey)
字符串操作方法
let un = 'ws'
let msg = '是帅哥'
let hh = un.concat(msg)
// concat (合并字符)
console.log(hh) // 'ws是帅哥'
// replace(匹配规则/字符,替换值)
let nhh = hh.replace('ws', 'ff')
console.log(nhh) 'ff是帅哥'
// let str = "hello kitty"
/* substring(start,end) 提取字符串中两个指定的索引号之间的字符 */
/* substring方法的两个参数,第一个表示以下标为多少的字符开头,
包括该字符,第二个表示以下标为多少的字符结尾,不包括该字符和数组splice一致 */
/* substring会返回一个截后的新字符串,对原来的字符,不会产生影响 */
/* let n = str.substring(1,3);
console.log(n,str); */
// let str = "hello kitty"
/* substring(start,end) 提取字符串中两个指定的索引号之间的字符 */
/* substring方法的两个参数,第一个表示以下标为多少的字符开头,
包括该字符,第二个表示以下标为多少的字符结尾,不包括该字符和数组splice一致 */
/* substring会返回一个截后的新字符串,对原来的字符,不会产生影响 */
/* let n = str.substring(1,3);
console.log(n,str); */
/* 如果你只传一个下标,表示你从这个下标开始到最后,包括最后一个字符 */
// let n = str.substring(1) //ello kitty
// let n = str.substring(1, str.length) //ello kitty
// console.log(n)
/* 把首字母变成大写的字符串 用-分割 变成Border-case-good */
let arr = ['border', 'case', 'good']
/* 把数组分割成字符串 */
/* let arrString = arr.join('-')
let str2 = arrString.substring(0, 1).toUpperCase() + arrString.substring(1)
document.write(str2) */
/* substr(start,number) 也是表示字符串截取
第一个参数表示从什么下标开始,并包括第一个下标,
第二个参数表示从开始的下标开始,截取几个不推荐使用这种写法*/
/* let str = '你好我的朋友'
let str2 = str.substring(0, 2)
console.log(str2)//你好
let str3 = str.substr(0, 2)
console.log(str3)//你好 */
/* slice(start,end) 也是表示字符串的截取, */
/* slice(start,end) 提取字符串中两个指定的索引号之间的字符 */
/* slice方法的两个参数,第一个表示以下标为多少的字符开头,
包括该字符,第二个表示以下标为多少的字符结尾,不包括该字符 */
let str = '我们都是石头人'
/* let str2 = str.slice(0, 4)
console.log(str2) //我们都是 */
// slice和substring的区别 slice支持负数下标,substring不支持
/* 结果是 : 是石 */
/* let str3 = str.slice(-4, -2)
console.log(str3) */
/* 用substring不可以实现 */
/* let str3 = str.substring(-4, -2)
console.log(str3) */
/* substring不能够用负数作为下标,没有负数下标这个功能
而slice可以,最后一个字符就是-1 依次类推 倒数第二个字符 就是-2 */
/* let str4 = str.substring(-3)
console.log(str4); */
/* ['abc','qwe'] 转成 abcQwe 字符串截取 使用slice 下标使用负数的形式*/
/* let arr2 = ['abc', 'qwe']
let arr2Str = arr2.join('')
let nArr2Str = arr2Str.slice(-arr2Str.length, -3) + arr2Str.slice(-3, -2).toUpperCase() + arr2Str.slice(-2)
console.log(nArr2Str) */