字符串

字符串

字符串概述

字符串也是一个数据结构(串),将同样的内容串在一起。因为在对应的js里面字符串属于一个值类型(值类型是常量 常量是不能变的)

字符串是不能改变的。结合上一章提到的数据结构里面串也是一个存储结构,作为存储结构增删改查的方法(字符串的增删改查 不能针对于本身 而是返回一个新的字符串)

字符串的声明

1、值类型赋值

var str="hello world"

2、以new关键词说明(引用了对应的值地址)

var str=newString("abc");//引用了一个空值的地址

ES6新增 字符串模板

var a='jack'

var str=`hello string ${a}`//键盘上面的Esc下面的这个键 解析${} 以变量来解析

console.log(str);//hello string jack

new String() 和 Stirng()区别

new String是构建一个String对象(引用数据类型 有地址指向的)

String单纯的将对应的传进入的参数转为string类型(值类型)

字符串的属性

length属性 返回字符串的长度(包含空格及换行)

var str='a b'

console.log(str.length) //长度为3 包含空格

通过下标来获取对应的字符串

var str='abc'

console.log(str[0]) //a

字符串的方法(返回新的字符串)

通过下标找字符串(char字符)

charAt(下标)

var str='abc'

str.charAt(0)//a

charCodeAt(ACSII码)

var str='abc'

str.charCodeAt(0)//97

通过字符串找下标(找不到返回-1 找得到返回对应的下标值 number)

indexOf

var str='abc'

console.log(str.indexOf('ab'))//返回的下标0

console.log(str.indexOf('d'))//找不到返回-1

//可以有俩个参数 第一个参数为 对应需要查询的字符串 第二个参数为 开始查找的下标

console.log(str.indexOf('b','2'))//从下标2开始找 找第一个出现b的位置 返回-1

var str='abbbccde'

console.log(str.indexOf('b','2'))//从下标2开始找 找第一个出现b的位置 在查找的时候把下标为2的位置当作第一个 返回2

lastindexOf

console.log(str.lastIndexOf('b'));//3

console.log(str.lastIndexOf('b',0));//-1 从0的位置往前找

console.log(str.lastIndexOf('b',4));//3  从4的位置往前找

//也就是说 默认的情况下 对应的后面的下标可以省略 str.length-1

自定义函数实现对应的indexOf方法和lastIndexOf方法

        //实现对应的indexOf方法

        var searchStr = "abcdefabcd"

        function indexOf(str, index) {

            if (!index) { //当前如果是undefined的值

                index = 0 //默认为0

            }

            // 得到str的长度

            var len = str.length

            //这个5是表示当前的字符串的总长度

            for (var i = index; i < searchStr.length; i++) {

                var s = ''

                for (var j = 0; j < len; j++) {

                    s += searchStr[i + j]

                }

                if (s == str) {

                    return i

                }

            }

            return -1

        }

        console.log(indexOf('bc', 4));

        //实现对应的lastindexOf方法

        var searchStr = "abcdefabcde"

        function lastIndexOf(str, index) {

            if (!index && index != 0) { //当前如果是undefined的值 或者不为0

                index = searchStr.length - 1 //默认为最后一个

            }

            // 得到str的长度

            var len = str.length

            //这个5是表示当前的字符串的总长度

            for (var i = index; i > len; i--) {

                var s = ''

                for (var j = 0; j < len; j++) {

                    s += searchStr[i - j]

                }

                if (s == str) {

                    return i

                }

            }

            return -1

        }

        console.log(lastIndexOf('e', 9));

search方法(和indexOf一样 支持正则表达式)

var str='abc'

console.log(str.search(/ab/))  //0 //ab/正则表达式

console.log(str.search(/ab/,0))//从0的位置开始找 匹配ab的内容

静态方法(通过构造方法名直接调用的叫做静态方法  他是对应的static修饰的)

fromCharCode 将对应的ascii码转为字符串

var str=string.fromCharCode(97)  //返回的是一个字符串

console.log(str)//a

concat将多个字符串转为连接成一个字符串返回

var str=`hello`.concat('world')

console.log(str)//helloworld

支持正则的方法(4个)

search查找(找到返回下标 没找到返回-1)

replace替换(将找到的第一个字符串替换成一个新的字符串)

var str='abc'

str.replace('a','hello')//将a替换成hello

console.log(str1)

split分割(返回数组)

//分割 成为一个数组 split 数组变成字符串 join(默认以,)

var str='1,2,3'

//默认不是以,作为分割 默认不分割 直接填入到数组

console.log(str.split());//['1,2,3']

console.log(str.split(','));//['1', '2', '3']

match匹配(返回数组)

//match 返回一个数组 (匹配的内容)

var str="abcacc"

//默认只找第一个匹配的 加入到数组

var arr=str.match('a')

console.log(arr);

截取的方法

substring(开始的下标,结束的下标)

substr(开始的下标,截取的个数)

//截取的方法 substring substr

var str="abcdef"

//substring(开始的下标,结束的下标)不包含结束的下标

console.log(str.substring(1));//bcdef

console.log(str.substring(1,3));//bc//截取不包含最后一个下标(默认不填str.length)

//substr(开始的下标,截取的下标)

console.log(str.substr(1));//默认的情况是截取到最后 bcdef

console.log(str.substr(1,3));//从下标1开始截取 截取个数为3个 bcd

转大写(toUpperCase)

var str='abcd'

console.log(str.toUpperCase());

转小写(toLowerCase)

var str='ABCD'

console.log(str.toLowerCase());


Match类 (数学类 一切和数学计算相关的方法都在这个里面 且这个方法都是静态方法)

属性

PI 3.1415926

E 科学计数法

方法

random随机数

round四舍五入

floor向下取整

celi向上取整

pow取幂次方

sqrt开平方

abs取绝对值

max最大值

min最小值

...

经典字符串的题目(回文字符串 马拉车算法(贪心算法)dp动态规划 dp数组 字符串搜索重复的字符串最长的 hash比对)

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