day06字符串

字符串的概述

字符串基础数据类型属于值类型,值类型是不可以改变的.字符串的方法是不能被改变的,只能创建一个新的字符串,字符串所有的方法都是创建一个新的字符串.字符串也是一个数据结构, 数据结构的类型叫串,那么他也具备增删查改的方法.

字符串的申明创建

第一种

var str="hello";单引号和双引号都是字符串

第二种 

var str=new String();使用new关键词 会重新开辟一个空间

new String 和String 的区别

new String会重新开辟空间

String只会进行简单的转换,转换的值在栈上

es6新增字符串模板属性 ``   

使用``可以识别对应变量

对应需要识别的变量通过`${变量名}`

扩展内容

1TB = 1024GB

1GB = 1024 MB

1MB = 1024 KB

1KB = 1024B

1B = 8个位

数值在对应的计算机内占几个字节

数值是占一个字节 英文字符一般占一个字节 中文字符一般占俩个字节(根据对应的编码来的)

字符串的相关方法 (字符串永远不会被改变,只能重新声明一个新变量接收改变后的字符串)

查询的方法

indexOf(从前到后)

lastIndexOf (从后往前)

search (从前到后 不支持指定对应的开始位置 支持正则表达式)

手写源码实现indexOf方法和lastIndexOf方法

indexOf实现

var str = 'abcdefgabcdef'

//indexOf会返回第一次找到的下标 (从前到后)

console.log(str.indexOf('abc')); //0

console.log(str.indexOf('abc',0)); //默认后面的参数不写就是从下标0开始

//从下标4开始找 从前往后找

console.log(str.indexOf('abc',4)); //7

//从下标10开始查找 找不到返回-1

console.log(str.indexOf('abc',10)); //-1

//lastIndexOf 从后往前找

console.log(str.lastIndexOf('abc'));//7

console.log(str.lastIndexOf('abc',str.length-1));//字符串的length表示对应的长度 不写

对应的后面的位置就是默认从最后一位开始

//指定从下标4开始 从后往前查找

console.log(str.lastIndexOf('abc',4));//0

//指定下标从1开始找 从后往前找 (可以包含后面的内容)

console.log(str.lastIndexOf('abc',1));//0

//search方法使用跟indexOf一样 但是search支持正则表达式 以及search不能指定开始位置 都是从0

位置开始

//search (从前到后)

console.log(str.search('abc')); //0

//当前这个正则表示查找abc 全局查找g以及不区分大小写i

var regx = /abc/gi

console.log(str.search('abc')); //0

console.log(str.search(regx)); //0

// indexOf从前往后查找

var currentStr = 'abcdefgabc'

console.log(currentStr[0]);//a

//传递的参数是匹配的字符串

function myIndexOf(str,start){

if(typeof start == 'undefined'){

start = 0

}

//遍历当前的字符串 我们可以通过对应的下标来访问对应的字符串

var index = -1

//遍历当前的字符串lastIndexOf

根据下标返回对应的字符串

charAt(根据下标返回字符串)

charCodeAt (根据下标返回对应字符串的ascii码)

for(var i = start;i<currentStr.length-str.length+1;i++){

//声明一个字符串进行拼接比较

var targetStr = currentStr[i]

//拼接字符串

for(var j=1;j<str.length;j++){

targetStr += currentStr[i+j]

}

//进行比较

if(targetStr == str){

index = i

break

}

}

return index;

}

console.log(myIndexOf('abc',1));

// lastIndexOf 从后往前查找

//传递的参数是匹配的字符串

function myLastIndexOf(str, start) {

if (typeof start == 'undefined') {

start = currentStr.length - 1

}

//遍历当前的字符串 我们可以通过对应的下标来访问对应的字符串

var index = -1

//遍历当前的字符串

for (var i = start; i >= 0; i--) {

//声明一个字符串进行拼接比较

var targetStr = currentStr[i]

//拼接字符串

for(var j=1;j<str.length;j++){

targetStr += currentStr[i+j]

}

//进行比较

if (targetStr == str) {

index = i

break

}

}

return index;

}

console.log(myLastIndexOf('abc', 1));

// 字符串跟数组一样可以直接通过下标来访问对应的字符

var str = 'hello'

console.log(str[0]); //h 返回下标为1的字符

//根据下标获取对应的字符串

//根据下标获取对应的字符串的ascii码 找不到返回NaN

console.log(str.charCodeAt(0));//返回h的ascii码 104

var str = 'hello'

//传入的参数 开始的下标 结束的下标(不包含结束位置)

var str1 = str.slice(1,3)

console.log(str1);//el

var str1 = str.slice()//截取全部

console.log(str1);//hello

var str1 = str.slice(1)//从下标1截取到末尾

console.log(str1);//ello

var str1 = str.slice(-1)//从下标length-1截取到末尾

console.log(str1);//o

var str = 'abcdefg'

//substring 必须具备开始位置(不支持负值) 结束位置可以写可以不写

var str1 = str.substring(1) //从下标截取到结尾

console.log(str1);//bcdefg

var str1 = str.substring(2,5) //从下标2截取到下标5

console.log(str1);//cde

//substr 截取 开始位置 个数

var str = 'abcdefg'

var str1 = str.substr(1)//从下标1开始截取到末尾

console.log(str1);//bcdefg

var str1 = str.substr(1,3)//从下标1开始截取3个

console.log(str1);//bcd

//连接方法concat 相当+

var str = 'hello'

var str1 = str.concat('world')

console.log(str1);split 分割

match 匹配

replace 替换

replace高阶函数用法

其他的辅助方法

去除前后空格

trim

转大小写

var regx = /abc/gi

var str = 'abc,Abc,Ab'

//search 查找 根据正则查找对应的下标 找不到返回-1(类似于indexOf)(number)

var index = str.search(regx)

console.log(index);//0

//split 分割的方法 将对应的字符串分割成对应的数组 (

Array)

var str = 'abc,Abc,Ab'

var regx = /,/gi

var splitArray = str.split(regx)

console.log(splitArray);

//match 匹配的 将匹配的内容(如果没有g没有只匹配第一个填入)填充到对应的数组返回 (

Array)

var regx = /abc/gi

var str = 'abc,Abc,Ab'

var matchArray = str.match(regx)

console.log(matchArray);//如果是全局匹配将获取所有匹配的 如果不是全局只会拿到第一次找到的

//replace 替换的方法 将对应的内容替换成某个内容然后返回 (String)

var regx = /abc/gi

var str = 'abc,Abc,Ab'

var newStr = str.replace(regx,'hello')//只会替换第一次找到的 (如果对应的正则里面有g那么

全部替换否则只替换第一次找到的)

console.log(newStr);//如果没有全局 那么只会替换一次 有的话会全部替换

// 所有的方法里面以函数作为的参数的函数称为高阶函数

// replace其实是一个高阶函数

var str = '你好世界'

var str1 = str.replace('好',function(value){//这个value其实就是你匹配的值

console.log(value);

return value+'坏' //返回的值其实就你用于替换的值

})

console.log(str1);//你好坏世界

// trim 去除前后空格

var str = ' a b '

var str1 = str.trim()

console.log(str1);toUpperCase

toLowerCase

静态方法 将ascii码转为字符串(使用类名.对应的方法 调用 使用static进行修饰)

fromCharCode

跟html标签相关的方法(不重要)

sub 下标

fontcolor

fontsize

//转大写

var str = 'abcABcd'

var str1 = str.toUpperCase()//转大写

console.log(str1);

//转小写

var str = 'abcABcd'

var str1 = str.toLowerCase()//转小写

console.log(str1);

//静态方法 使用对应的类名直接点 使用static进行修饰的 fromCharCode

var newStr = String.fromCharCode(97,98,99) //将ascii码变成字符串

console.log(newStr);//abc

//返回一个sub标签

var str = 'hello'

var sub = str.sub()

console.log(sub);

//fontColor 返回一个font标签指定对应的颜色

var tag = str.fontcolor('red')

console.log(tag);

//fontSize 返回一个font标签指定对应的字体大小

var tag = str.fontsize(30)

console.log(tag);字符串去除前后空格的方法 trim

Math类

概述:Math类是用于数学运算的。他里面的属性及相关的方法都是静态的(方便调用)。

属性 property:

PI 圆周率Π

E 科学计数法

方法 function:

Math.max 最大值

Math.min 最小值

Math.pow 幂次方

Math.sqrt 开平方

Math.ceil 向上取整 *

Math.floor 向下取整 *

Math.round 四舍五入 *

Math.random 取随机数(0-1随机数 包含0不包含1)*

Math.abs 取绝对值

总结

字符串是基础值类型,不能被更改。

字符串的length属性是只读的,不能更改。

字符串的方法都是以返回一个新的字符串为基准,原本字符串不会受影响。

支持正则的方法4个 search ,match ,split,replace

字符串的截取方法 slice ,substring ,substr

indexOf根据对应的字符串获取对应的下标 charAt是根据下标来获取对应的字符串。

字符串拥有通过下标访问的特性,以及具备length属性。

字符串转大写的方法 toUpperCase,toLowerCase

字符串去除前后空格的方法 trim

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • /1.什么是字符串? //就是由一组双引号或单引号组成字符,就是字符串 //2.字符串的创建方式 ...
    寒非鱼阅读 910评论 0 0
  • 【es6字符串模板】1.反斜点 ··2.换行3.特殊符号不转义4.可以插入变量 ${变量名}【es6字符串新增方法...
    含含要暴怒阅读 4,284评论 0 1
  • 字符串 字符串概述 字符串也是一个数据结构(串),将同样的内容串在一起。因为在对应的js里面字符串属于一个值类型(...
    富贵花开888阅读 851评论 0 2
  • 常用的js字符串函数集合 一、其他数据类型转换为字符串类型 (1).最直接的 给数据加引号(任何数据类型加上引号...
    Alexa_老王阅读 4,062评论 1 1
  • 1.什么是字符串(str): python自带的容器型数据类型(序列),不可变有序 python中的字符串使用单引...
    筱哥家的小跟班阅读 1,358评论 0 0