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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容

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