字符串

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

阿斯克码

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

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

ASCII控制字符

二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义
0000 0000 0 00 NUL 空字符(Null)
0000 0001 1 01 SOH 标题开始
0000 0010 2 02 STX 本文开始
0000 0011 3 03 ETX 本文结束
0000 0100 4 04 EOT 传输结束
0000 0101 5 05 ENQ 请求
0000 0110 6 06 ACK 确认回应
0000 0111 7 07 BEL 响铃
0000 1000 8 08 BS 退格
0000 1001 9 09 HT 水平定位符号
0000 1010 10 0A LF 换行键
0000 1011 11 0B VT 垂直定位符号
0000 1100 12 0C FF 换页键
0000 1101 13 0D CR 归位键
0000 1110 14 0E SO 取消变换(Shift out)
0000 1111 15 0F SI 启用变换(Shift in)
0001 0000 16 10 DLE 跳出数据通讯
0001 0001 17 11 DC1 设备控制一(XON 启用软件速度控制)
0001 0010 18 12 DC2 设备控制二
0001 0011 19 13 DC3 设备控制三(XOFF 停用软件速度控制)
0001 0100 20 14 DC4 设备控制四
0001 0101 21 15 NAK 确认失败回应
0001 0110 22 16 SYN 同步用暂停
0001 0111 23 17 ETB 区块传输结束
0001 1000 24 18 CAN 取消
0001 1001 25 19 EM 连接介质中断
0001 1010 26 1A SUB 替换
0001 1011 27 1B ESC 跳出
0001 1100 28 1C FS 文件分割符
0001 1101 29 1D GS 组群分隔符
0001 1110 30 1E RS 记录分隔符
0001 1111 31 1F US 单元分隔符
0111 1111 127 7F DEL 删除

ASCII可显示字符

二进制 十进制 十六进制 图形
0010 0000 32 20 (空格)(␠)
0010 0001 33 21 !
0010 0010 34 22 "
0010 0011 35 23 #
0010 0100 36 24 $
0010 0101 37 25 %
0010 0110 38 26 &
0010 0111 39 27
0010 1000 40 28 (
0010 1001 41 29 )
0010 1010 42 2A *
0010 1011 43 2B +
0010 1100 44 2C ,
0010 1101 45 2D -
0010 1110 46 2E .
0010 1111 47 2F /
0011 0000 48 30 0
0011 0001 49 31 1
0011 0010 50 32 2
0011 0011 51 33 3
0011 0100 52 34 4
0011 0101 53 35 5
0011 0110 54 36 6
0011 0111 55 37 7
0011 1000 56 38 8
0011 1001 57 39 9
0011 1010 58 3A :
0011 1011 59 3B ;
0011 1100 60 3C <
0011 1101 61 3D =
0011 1110 62 3E >
0011 1111 63 3F ?
二进制 十进制 十六进制 图形
0100 0000 64 40 @
0100 0001 65 41 A
0100 0010 66 42 B
0100 0011 67 43 C
0100 0100 68 44 D
0100 0101 69 45 E
0100 0110 70 46 F
0100 0111 71 47 G
0100 1000 72 48 H
0100 1001 73 49 I
0100 1010 74 4A J
0100 1011 75 4B K
0100 1100 76 4C L
0100 1101 77 4D M
0100 1110 78 4E N
0100 1111 79 4F O
0101 0000 80 50 P
0101 0001 81 51 Q
0101 0010 82 52 R
0101 0011 83 53 S
0101 0100 84 54 T
0101 0101 85 55 U
0101 0110 86 56 V
0101 0111 87 57 W
0101 1000 88 58 X
0101 1001 89 59 Y
0101 1010 90 5A Z
0101 1011 91 5B [
0101 1100 92 5C \
0101 1101 93 5D ]
0101 1110 94 5E ^
0101 1111 95 5F _
二进制 十进制 十六进制 图形
0110 0000 96 60 `
0110 0001 97 61 a
0110 0010 98 62 b
0110 0011 99 63 c
0110 0100 100 64 d
0110 0101 101 65 e
0110 0110 102 66 f
0110 0111 103 67 g
0110 1000 104 68 h
0110 1001 105 69 i
0110 1010 106 6A j
0110 1011 107 6B k
0110 1100 108 6C l
0110 1101 109 6D m
0110 1110 110 6E n
0110 1111 111 6F o
0111 0000 112 70 p
0111 0001 113 71 q
0111 0010 114 72 r
0111 0011 115 73 s
0111 0100 116 74 t
0111 0101 117 75 u
0111 0110 118 76 v
0111 0111 119 77 w
0111 1000 120 78 x
0111 1001 121 79 y
0111 1010 122 7A z
0111 1011 123 7B {
0111 1100 124 7C |
0111 1101 125 7D }
0111 1110 126 7E ~

为什么要学习阿斯克码?

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

字符串的比较

我们曾经碰到过一个问题,接收到文本框的两个值,一个是"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
感谢感谢

✨字符串de介绍及其常见的api相关推荐

  1. Python中字符串的介绍以及常见操作

    1.字符串的介绍 python中的字符串格式: 如下定义的变量a,存储的是数字类型的值 a = 100 如下定义的变量b,存储的是字符串类型的值 b = "hello python" ...

  2. 常见的字符函数与字符串函数介绍(1)

    常见的字符函数与字符串函数介绍 前言 C语言中对字符与字符串的处理很是频繁,但是C语言中并没有字符串类型的变量,字符串通常存放在常量字符串或者字符数组中.字符串常量适用于那些对它不做任何修改的字符串函 ...

  3. 字符串的介绍及常用API总结

    本期主要介绍字符串的使用以及常用的API! 目录 一.定义字符串的几种方式 二.字符数组的存储方式 三.sizeof和strlen的区别 四.动态开辟字符串 1.malloc 2.free 3.rea ...

  4. Tair存储引擎简单介绍以及常见API操作

    一.Tair存储引擎 Tair的存储引擎有一个抽象层(storage_manager),只要实现存储引擎接口,便可以替换Tair的底层存储引擎. 可插拔存储引擎-类似MySQL Tair默认包含四种存 ...

  5. 【小程序】常见系统API | 页面分享 | 位置信息 | 本地存储

    文章目录 常见系统API 页面分享的基本介绍 设备信息和位置信息 小程序Storage存储 常见系统API 页面分享的基本介绍 分享是小程序扩散的一种重要方式,小程序中有两种分享方式: 方式一:点击右 ...

  6. 由SoC到SOPC、SoC FPGA ,异同优缺点的介绍及常见应用场景

    由SoC到SOPC.SoC FPGA ,异同优缺点的介绍及常见应用场景 目录 由SoC到SOPC.SoC FPGA ,异同优缺点的介绍及常见应用场景 说一说 一.关于SoC 二.关于SOPC 1.概念 ...

  7. php 字符串函数 教程_php字符串函数 str类常见用法示例

    本文实例讲述了php字符串函数 str类常见用法.分享给大家供大家参考,具体如下: str_split(string, leg);//将一个字符 串转换为数组,参数1:要被转换的字符串,参数2:每 段 ...

  8. 字符串的几种常见的反转

    字符串的几种常见的反转: 提到字符串的反转,最先想到的应该是StringBuiler的reverse()的方法,方便快捷.但有时我们也需要自己写一些反转的代码. 第一种  通过String类的char ...

  9. Ubuntu 11.10 Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答

    学技术怎么能不会用服务器,阿里云服务器现8折优惠,还有更多优惠券限量发放 https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.ht ...

最新文章

  1. ASSERT()是干什么用的
  2. ASP.NET上传文件对文件类型的高级判断
  3. Execl导入问题之文本转换
  4. Exception in thread main java.time.format.DateTimeParseException: Text '31-Dec-13' could not be pa
  5. bootstrap 富文本_入坑吗?说说几个富文本编辑器
  6. 7-11 分段计算居民水费 (10 分)
  7. wdcp 无法更换php,wdcp降级到php5.2后Zend Optimizer失效的解决办法
  8. HTML日志抓取,如何使抓取的HTML规范化
  9. L1- 017——024
  10. 深度学习 个性化推荐_生产中的深度强化学习第2部分:个性化用户通知
  11. git 创建和合并分支
  12. Arduino Nano 自制显示器 “流光溢彩” 外设教程(新人向)
  13. 摄影测量之空间后方交会程序
  14. 第二章 VB语言基础
  15. 上海Apple面试php,面试Apple苹果APO的MQE经验
  16. 信数金服:物联网案例之工业物联网中故障预警与风险管理的规范性分析
  17. 【安卓】Android Studio 3.5的引用包错误
  18. 搭建GitLab代码管理仓库
  19. 直积、直和与张量积简介
  20. 为了让自己变得更优秀,我喜欢上了这2位B站up主

热门文章

  1. 1.网络基础-走进网络世界
  2. 满记甜品“联姻”小满茶田,老品牌寻觅翻红之道
  3. 美通企业周刊 | 亚马逊会员日卖家销售额创新高;宾三得利推出首款全球混合威士忌...
  4. 限购地区车牌,离婚时候如何分割
  5. 回归模型的score得分为负_SPSS中 回归 B值为负数什么意思
  6. jQurey回车登陆
  7. 剑指offer 矩阵中的路径 @python
  8. 同花顺python_这是真的么 | 学会了用Python预测股票价格
  9. xuelipay 个人即时到账收款平台 原理及源码详解 支持支付宝微信
  10. Cydia常用源推荐