字符串
字符串概述
字符串也是一个数据结构(串),将同样的内容串在一起。因为在对应的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比对)