✨字符串de介绍及其常见的api

字符串

计算机产生之初,内部只能识别二进制数字,无法识别英文字母和符号。为了能让计算机识别字 母、数字和符号,科学家们制定了一个对照表,字母、数字、符号跟二进制数字相对应,这样当人们输入字母的时候,计算机使用对应的二进制数字处理,这样就相当于计算机能识别字母、符号和数字了。这个对照表叫做ASCII,翻译成中文叫阿斯克码。

阿斯克码

阿斯克码计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code
for Information Interchange,美国标准信息交换码)。所以对于英文字母和符号的支持是很全面的。

阿斯克码的具体内容如下:

ASCII控制字符

二进制十进制十六进制缩写可以显示的表示法名称/意义
0000 0000000NUL空字符(Null)
0000 0001101SOH标题开始
0000 0010202STX本文开始
0000 0011303ETX本文结束
0000 0100404EOT传输结束
0000 0101505ENQ请求
0000 0110606ACK确认回应
0000 0111707BEL响铃
0000 1000808BS退格
0000 1001909HT水平定位符号
0000 1010100ALF换行键
0000 1011110BVT垂直定位符号
0000 1100120CFF换页键
0000 1101130DCR归位键
0000 1110140ESO取消变换(Shift out)
0000 1111150FSI启用变换(Shift in)
0001 00001610DLE跳出数据通讯
0001 00011711DC1设备控制一(XON 启用软件速度控制)
0001 00101812DC2设备控制二
0001 00111913DC3设备控制三(XOFF 停用软件速度控制)
0001 01002014DC4设备控制四
0001 01012115NAK确认失败回应
0001 01102216SYN同步用暂停
0001 01112317ETB区块传输结束
0001 10002418CAN取消
0001 10012519EM连接介质中断
0001 1010261ASUB替换
0001 1011271BESC跳出
0001 1100281CFS文件分割符
0001 1101291DGS组群分隔符
0001 1110301ERS记录分隔符
0001 1111311FUS单元分隔符
0111 11111277FDEL删除

ASCII可显示字符

二进制十进制十六进制图形
0010 00003220(空格)(␠)
0010 00013321!
0010 00103422"
0010 00113523#
0010 01003624$
0010 01013725%
0010 01103826&
0010 01113927
0010 10004028(
0010 10014129)
0010 1010422A*
0010 1011432B+
0010 1100442C,
0010 1101452D-
0010 1110462E.
0010 1111472F/
0011 000048300
0011 000149311
0011 001050322
0011 001151333
0011 010052344
0011 010153355
0011 011054366
0011 011155377
0011 100056388
0011 100157399
0011 1010583A:
0011 1011593B;
0011 1100603C<
0011 1101613D=
0011 1110623E>
0011 1111633F?
二进制十进制十六进制图形
0100 00006440@
0100 00016541A
0100 00106642B
0100 00116743C
0100 01006844D
0100 01016945E
0100 01107046F
0100 01117147G
0100 10007248H
0100 10017349I
0100 1010744AJ
0100 1011754BK
0100 1100764CL
0100 1101774DM
0100 1110784EN
0100 1111794FO
0101 00008050P
0101 00018151Q
0101 00108252R
0101 00118353S
0101 01008454T
0101 01018555U
0101 01108656V
0101 01118757W
0101 10008858X
0101 10018959Y
0101 1010905AZ
0101 1011915B[
0101 1100925C\
0101 1101935D]
0101 1110945E^
0101 1111955F_
二进制十进制十六进制图形
0110 00009660`
0110 00019761a
0110 00109862b
0110 00119963c
0110 010010064d
0110 010110165e
0110 011010266f
0110 011110367g
0110 100010468h
0110 100110569i
0110 10101066Aj
0110 10111076Bk
0110 11001086Cl
0110 11011096Dm
0110 11101106En
0110 11111116Fo
0111 000011270p
0111 000111371q
0111 001011472r
0111 001111573s
0111 010011674t
0111 010111775u
0111 011011876v
0111 011111977w
0111 100012078x
0111 100112179y
0111 10101227Az
0111 10111237B{
0111 11001247C|
0111 11011257D}
0111 11101267E~

为什么要学习阿斯克码?

因为两个字符串也是可以比较大小的,比较的规则是逐字符进行比较,字符的大小由字符对应的阿斯克码决定。

字符串的比较

我们曾经碰到过一个问题,接收到文本框的两个值,一个是"3",另一个是"10",这两个值进行大小比较的时候,结果是:"3">"10" === true,出现这个结果的原因是,两个字符串进行比较的时候,是逐字符进行比较,也就是字符"3"先和字符"1"进行比较,如果第一个字符相等再进行第二个字符的比较。

从阿斯克码表中,可以找到字符"3"和字符"1"相对应的值,很明显,字符"3"是要大于字符"1"的。

通过阿斯克码表,我们可以得出一些字符串比较的规律:

  1. 字母比数字大
  2. 小写字母比大写字母大
  3. 字母越靠后越大

思考:如何比较两个中文汉字字符的大小?

阿斯克码总共128个,包含符号、大小写英文字母、数字。阿斯克码是由美国人创建的,所以对于英文的支持非常好。后来随着计算机的普及,各个国家在使用计算机的时候,没办法使用本国文字,这样用起来非常困难。所以众多国家的科学家一起制定了一个更大的对照表,包含各个国家的文字符号,所以称之为万国码,也叫作unicode。

其实unicode就是更大的阿斯克码。

字符串的基本操作

字符串也可以通过下标获取字符

例:

var str = '你好吗';
// 输出下标为1的字符
console.log(str[1]); // 好

每个字符都有对应的下标,所以,字符串也可以进行遍历。

字符串是只读数据类型,不能添加新字符,不能修改字符串中的字符,不能删除某个字符

例:

var str = '你好吗';
// 修改下标为1的字符
str[1] = "帅"
console.log(str); // 你好吗

字符串常见API

length属性

求字符串中字符的个数 - 字符串的长度

语法:

字符串.length

例:

var str = 'asdfvczx';
// 输出字符串的长度
console.log(str.length);
charAt方法

根据指定的下标获取对应的字符

语法:

字符串.charAt(下标)

例:

var str = 'abcdef';
// 获取下标为3的字符
var res = str.charAt(3);
console.log(res); // d

使用说明:如果下标存在就返回对应的字符,如果下标不存在就返回空字符串

charCodeAt方法

根据指定下标获取对应的字符的阿斯克码

语法:

字符串.charCodeAt(下标);

例:

var str = 'abcdef';
// 获取下标为3的字符的阿斯克码
var res = str.charCodeAt(0);
console.log(res); // 97
String.fromCharCode方法

根据指定的阿斯克码得到对应的字符

语法:

String.fromCharCode(阿斯克码)

例:

// 获取98对应的字符var res = String.fromCharCode(98);console.log(res); // b
indexOf方法

查找字符或子字符串在大字符串中第一次出现的位置

语法:

大字符串.indexOf(字符/子字符串[,开始查找的下标])

例:

var str = 'i love you';// 找到o字符在str中第一次出现的位置var res = str.indexOf('o');console.log(res); // 3

使用说明:

  1. 如果找到这个字符在字符串中的位置,就返回这个字符对应的下标,如果找不到,就返回-1
  2. 第二个参数可选项。表示从哪个下标开始查找
lastIndexOf方法

查找字符或子字符串在大字符串中最后一次出现的位置

语法:

大字符串.lastIndexOf(字符/子字符串[,开始查找的下标])

例:

var str = 'i love you';// 找到o字符在str中最后一次出现的位置var res = str.lastIndexOf('o');console.log(res); // 8

使用说明:

  1. 如果找到这个字符在字符串中的位置,就返回这个字符对应的下标,如果找不到,就返回-1
  2. 第二个参数可选项。表示从哪个下标开始查找
substr方法

截取字符串

语法:

字符串.substr(开始下标[,截取长度])

例:

var str = '你的头发还好吗';// 从下标2开始截取2个字符var res = str.substr(2,2);console.log(res); // 头发

使用说明:

  1. 第二个参数是可选项。如果省略掉第二个参数,默认截取到字符串末尾。
  2. 开始下标可以使用负数表示,从右往左的下标依次是-1,-2,。。。
  3. 截取字符的时候都是从左向右截取的

例:

var str = '你的头发还好吗';// 从下表2开始截取var res = str.substr(2);console.log(res); // 头发还好吗// 从下标-5开始截取2个字符var res = str.substr(-5,2);console.log(res); // 头发// 从下标-1开始截取2个字符var res = str.substr(-1,2);console.log(res);// 吗

使用说明:截取到最后也不满足长度的时候,就返回能截取到的所有字符

substring方法

截取字符串

语法:

字符串.substring(开始下标[,结束下标])

例:

var str = '你的头发还好吗';// 从下标2开始截取到下标4var res = str.substr(2,4);console.log(res); // 头发

使用说明:

  1. 第二个参数是可选项。如果省略掉第二个参数的话,默认截取到字符串末尾。
  2. 截取的结果包含开始下标对应的字符,不包含结束下标对应的字符
  3. 如果开始下标和结束下标相等,则返回空字符串;如果开始下标大于结束下标,则先交换两个参数,然后再截取;如果开始下标或结束下标为负数,则先将负数替换成0,然后再截取

例:

var str = '你的头发还好吗';// 从下标2开始截取var res = str.substring(2);console.log(res); // 头发还好吗// 从下标2截取到下标-2var res = str.substring(2,-2);console.log(res); // 你的/*过程分析:首先开始下标大于结束下标,所以先交换两个参数,相当于: str.substring(-2,2);开始下标为负数,所以替换成0,相当于: str.substring(0,2);所以结果为:你的*/
slice方法

截取字符串

语法:

字符串.slice(开始下标[,结束下标]);

例:

var str = '你的头发还好吗';// 从下标2截取到下标4var res = str.slice(2,4);console.log(res); // 头发

使用说明:

  1. 第二个参数是可选项。如果省略第二个参数默认截取到字符串的末尾
  2. 返回的结果包含开始下标对应的字符,不包含结束下标对应的字符
  3. 截取的时候,下标可以使用负数表示
  4. 开始下标对应的字符一定要在结束下标对应的字符左边,否则返回空字符串。因为截取的顺序是从左向右的

例:

var str = '你的头发还好吗';// 从下标2开始截取var res = str.slice(2);console.log(res); // 头发还好吗// 从下标-5开始截取到下标4var res = str.slice(-5,4);console.log(res); // 头发// 从下标-1截取到下标-3var res = str.slice(-1,-3);console.log(res); // 空
split方法

使用指定的分隔符将字符串分割成多部分组成数组

语法:

字符串.split([分隔符,[最后数组中要保留的个数]])

例:

var str = 'open_door_now';// 以下划线为分隔符,分割字符串为数组var arr = str.split("_");console.log(arr); // ["open", "door", "now"]

使用说明:

  1. 分隔符是可选项。如果省略了分隔符,则将整个字符串当做数组的元素,如果是空字符串,则会在每个字符中间进行分割
  2. 要保留的个数是可选项。如果省略了个数,则返回全部的个数,如果加上个数,则是设置了数组中元素的个数。

例:

var str = 'open_door_now';// 省略分隔符将字符串分割为数组var arr = str.split();console.log(arr); // ["open_door_now"]// 以空字符串进行分割字符串var arr = str.split("");console.log(arr); // ["o", "p", "e", "n", "_", "d", "o", "o", "r", "_", "n", "o", "w"]// 以空字符串分割字符串,并在数组中保留4个元素var arr = str.split("",4);console.log(arr); // ["o", "p", "e", "n"]
replace方法

使用新的字符或子字符串替换原来在字符串中的一部分

语法:

字符串.replace(将要被替换的部分,要替换进来的新内容); // 替换的部分也支持用正则匹配

例:

var str = '你的头发还好吗';// 使用"眉毛"将"头发"替换掉var res = str.replace("头发","眉毛");console.log(res); // 你的眉毛还好吗

使用说明:如果第一个参数是空字符串,则会将新内容拼接到原字符串前面

例:

var str = '你的头发还好吗';// 使用"眉毛"将""替换掉var res = str.replace("","眉毛");console.log(res); // 眉毛你的头发还好吗
trim方法

去除字符串左右两边的空白

语法:

字符串.trim();

例:

var str = '    ab c  ';// 取出str左右两边的空白var res = str.trim();console.log(res); // 'ab c'

使用说明:

  1. 去除的是左右两边的空白,不会去除字符串中间的空白
  2. 只去除左边的空白使用:trimLeft方法;只去除右边的空白使用:trimRight方法
大小写转换方法

将字符串中所有小写字母转为大写字母,使用:toUpperCase方法

将字符串中所有小写字母转为大写字母,使用:toLowerCase方法

语法:

字符串.toUpperCase(); # 转为大写
字符串.toLowerCase(); # 转为小写

字符串案例

对象数组模糊查找 :

var data=[
    {id:1001,icon:"img/1.png",name:"计算机",num:1,price:10},
    {id:1002,icon:"img/2.png",name:"手机",num:1,price:20},
    {id:1003,icon:"img/3.png",name:"电脑",num:1,price:30},
    {id:1004,icon:"img/4.png",name:"显示器",num:1,price:40},
    {id:1005,icon:"img/5.png",name:"飞行器",num:1,price:50},
    {id:1006,icon:"img/6.png",name:"计时器",num:1,price:60},
    {id:1007,icon:"img/7.png",name:"笔记本",num:1,price:70},
    {id:1008,icon:"img/8.png",name:"草稿本",num:1,price:80},
    {id:1009,icon:"img/9.png",name:"公示牌",num:1,price:90},
    {id:1010,icon:"img/10.png",name:"手机线",num:1,price:100}
];
function searchStr(search) {
    return data.filter(function (t) {
        return t.name.indexOf(search)>-1;
    });
}

找到字符串中 ‘’ 某个字出现过几次 第几位

while(str.indexOf(s,i) != -1){
    alert(str.indexOf(s,i))
    i = str.indexOf(s,i)+s.length
}

还是那句话 如果有帮助到你 麻烦给一个三连+关注,能看到博主的最新blog
感谢感谢
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小朋友120

谢谢你拉近我与星星的距离

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值