首页 > 其他分享 >day06字符串

day06字符串

时间:2023-02-18 11:36:33浏览次数:29  
标签:console log day06 var str 字符串 下标

day06字符串

概述:字符串也是一种数据结构,叫做串(共同的内容串在一起)是基础值类型,不可变,算法解决问题使用频繁,常用解决一下查找问题(马拉车算算法,回文字符串).

字符串声明

赋值声明
//可以使用单双引号
var str = '字符串'
通过new关键词构建
var str = new String('传入任意类型')
区别

1:new关键词声明的字符串 用typeof验证得到的是object 是赋值声明得到是string

2:使用new关键词声明的字符串俩个是不相等的

var str = 'hello'
       var str1 = 'hello'
       console.log(str == str1)//treu
       console.log(str === str1)
       var str2 = new String('hello')
       var str3 = new String('hello')
       console.log(str2 == str3) //false
       console.log(str2 === str3) //false
       
       console.log(str == str2)//true
       console.log(str === str2)//false

es6新增字符串模板``

var str4 = 'hello'
//在字符串模板内容 ${}表示引用变量 传入的是变量名 支持标准js语法
       var str5 = `jack ${str4}`
       console.log(str5)

字符串的访问以及访问

length 属性是只读属性 表示字符串长度

var str = 'hello'
console.log(str.length)//5
str.length = 10 //无意义的操作 字符串不可变
console.log(str.length)//5

字符串可以通过下标来访问某个内容

//串这个数据结构是有序的 可以通过下标来访问对应的里面的某个字符
console.log(str[0])//h
str[0] = 'A' //字符串不可变 没有意义
console.log(str)//hello
console.log(str[0])//h

 

字符串相关方法(不可变----一定有返回值)

字符串相关方法是以返回值来操作(本身不可变)

indexOf 根据传入的字符串返回第一次出现的下标(找不到返回-1)从前往后

console.log('aaaaaa'.indexOf('a'))//0
console.log('aaabaabbab'.indexOf('ab'))//3

lastIndexOf 根据传入字符串返回第一次出现的下标,(找不到返回-1)从后往前

console.log('aaaaaa'.indexOf('a'))//5
console.log('aaabaabbab'.indexOf('ab'))//8

search 方法类似于indexOf 支持正则表达式

// search 返回对应的下标 找不到返回-1 支持正则表达式
console.log('aaabbb'.search('ab'))//2
console.log('aaabbb'.search('ab',3))//2 search只有一个参数 没有开始位置

 

底层实现lastIndexOf及indexOf

indexOf

var str = 'abcdefgabcab'
function myIdexOf(value,index){
if(value == undefined){
throw new Error('传参错误')
}
if(index == undefined){ //如果index没有设置默认值
index = 0
}
//如果当前开始位置+value的长度大于本身字符串的长度那么返回值为-1
if(index+value.length > str.length){
return -1
}else{
//变量字符串
for(var i=index;i<str.length;i++){
//根据value长度来拼接
var v = str[i]
for(var j=1;j<value.length;j++){
v+=str[i+j]
}
if(value == v){
return i
}
}
}
return -1
}
console.log(myIdexOf('ab',3))

lastindexOf(!)

var str = 'abcdefgabcab'
function myIdexOf(value,index){
if(value == undefined){
throw new Error('传参错误')
}
if(index == undefined){ //如果index没有设置默认值
index = str.length
}
//如果当前开始位置+value的长度大于本身字符串的长度那么返回值为-1
//变量字符串
for(var i=index;i>=0;i--){
//根据value长度来拼接
var v = str[i]
for(var j=1;j<value.length;j++){
v+=str[i+j]
}
if(value == v){
return i
}
}

return -1
}
console.log(myIdexOf('ab',3))

charAt 根据下标返回字符

console.log('abc'.charAt(0))//a

charCodeAt 根据下标返回字符串的ascii码

console.log('abc'.charCodeAt(0))//97

静态方法 String.fromCharCode 将ascii转为字符串

//静态方法
// 将ascii码变成字符串 String
var str = String.fromCharCode(97) //返回一个字符串
console.log(str)
截取相关的方法 (如果只传递一个参数那么默认都是截取到最后)
substring 传入开始下标及结束下标(包含开始的下标不包含结束的)
var str = 'abcdef'.substring(3,5)//de
slice 传入开始下标及结束下标 (可以一个参数都不传递默认截取所有)
var str = 'abcdef'.slice(2,4)//cd
连接的方法
concat
var str = 'hello'
//返回一个新的字符串
var concatStr = str.concat('world')
console.log(concatStr) //helloworld
!支持正则的四个方法
search
//search 查找(根据传入的字符串返回第一次出现位置的下标)
var str = '1_abcd'
//\w数字字母下划线
var index = str.search(/\w/)
console.log(index)//0
match
//match 匹配 返回一个数组(包含匹配的内容)执行一次
var str = '
_
abc?789'
var strArr = str.match(/\w/)
console.log(strArr)
replace
//replace 替换 根据对应的匹配内容进行替换 执行一次
var str = 'abcabc'
// var str1 = str.replace('a','f')//传入字符串形式 将a替换为f
var str1 = str.replace(/a/,'f')//传入正则形式 将a替换为f
console.log(str1)
//高阶函数写法的replace 支持传入函数作为参数
//传入一个函数作为参数的形式 里面的参数是匹配的内容 里面的return是替换的内容
var replaceStr = str.replace(/a/,function(value){
console.log(value)//a
return 'f'
})
console.log(replaceStr)
split
//split 分割的 将对应的字符串分割为一个数组返回
//数组的join相反 将数据拼接成一个字符串返回 将字符串拆分为数组
var str = 'a,b,c'
//如果不传参 他就将这个字符串直接填入数组返回
// var arr = str.split(',')
var arr = str.split(/,/)
console.log(arr)
练习

将"abcabcabcabc" 中的bc全部替换为hello

var str =
"
abcabcabcabc"
//先找bc 再进行替换没有了退出
while(str.search('bc')!=-1){
str = str.replace('bc','hello')
}
console.log(str)

统计一个字符串在另一个字符串内的出现次数

//统计一个字符串在另外一个字符串中出现的次数
function getCount(from,str){
//abcabcabc bc
var arr = from.split(str)
return arr.length-1
}
var count = getCount('bacfddesdasda','dd')
console.log(count)
其他相关的函数
去除首尾空格 trim
var str = ' a b c '
console.log(str.trim())
转大小写

toUpperCase 转大写 toLowerCase 转小写

console.log(str.toUpperCase())//ABCBC
console.log(str.toLowerCase())//abcbc

toLocalUpperCase toLocalLowerCase

//toLocalUpperCase
//toLocalLowerCase
//根据本地格式进行转换
console.log('a'.toLocaleUpperCase())
console.log('A'.toLocaleLowerCase())
//toString 转为字符串 他是所有对象都存在的方法(万物皆对象)
统计一个字符串中大写字母的个数
//遍历比较
function fn(str) {
var count = 0
//先遍历
for (var i = 0; i < str.length; i++) {
if (str.charAt(i) >= 'A' && str.charAt(i) <= 'Z') {
count++
}
}
return count
}
console.log(fn('AbcASna'))
//利用正则
console.log( 'AbcASna'.match(/[A-Z]/g).length)

html元素相关的方法

sub 返回一个sub标签

var str = 'hello world'
console.log(str.sub())//<sub>hello world</sub>
document.write(str.sub())

fontColor 返回font标签 color属性

//fontColor
console.log(str.fontcolor('red'))
document.write(str.fontcolor('red'))

fontSize 返回font标签 size属性

//fontSize
console.log(str.fontsize(30))
document.write(str.fontsize(30))
练习

HOW ARE YOU ? I AM DJ. DJ DJ DJ... 将dj变成**并且变成红色 将首字母大写 其他全部小写

var str = 'HOW ARE YOU ? I AM DJ. DJ DJ DJ... '
str = str.trim().toLowerCase() //先全部小写
var arr = str.split(' ') //拆分成一个个的内容
//遍历数组进行操作
for (var i = 0; i < arr.length; i++) {
//出现dj 全部转为**
arr[i] = arr[i].replace('dj', '**'.fontcolor('red'))
//arr[i]就是里面一个个的字符串
//将首字母大写 其他不变
arr[i] = arr[i][0].toUpperCase() + arr[i].slice(1)
}
var str = arr.join(' ') //将数据连接变成字符串
document.write(str)
总结
  • 字符串不可变 字符串的方法以返回一个新的字符串来进行操作

  • 字符串indexOf方法用于获取下标的 charAt方法用于或者字符串

  • 字符串截取方法substring slice 开始下标和结束下标作为参数 substr 以个数来作为截取

  • 字符串支持正则的方法 search match replace split

  • 字符串进行拼接的方法concat

  • 字符串去除首尾空格的方法trim ,toUpperCase 转大写 toLowerCase 转小写

Math类

Math是数学类,他里面包含关于数学操作的方法及属性(里面的内容设计为静态 直接Math去点)

属性

PI 数学Π E 科学计数法e

方法
  • max 最大值 传入多个值比较出最大值并返回

  • min 最小值 传入多个值比较出最小值返回

  • pow 取幂次方

  • sqrt 开平方

  • ceil 向上取整

  • floor 向下取整

  • round 四舍五入

  • random 取0-1之间的随机数 包含0 不包含1

  • abs 取绝对值

标签:console,log,day06,var,str,字符串,下标
From: https://www.cnblogs.com/buyAVnub/p/17132212.html

相关文章