JS字符串简介:
网页通常存在大量的文本内容,这些文本内容在 JS 中将作为字符串来处理。在 JS 中使用字符串可以在客户端动态处理网页文本内容。在 JS 中,字符串(string)是由单引号或双引号括起来的一组由 16 位 Unicode 字符组成的字符序列,用于表示和处理文本。
Unicode,也称统一码、万国码。由于计算机只能处理 0 和 1 两种数字,所以对需要处理的数据,要将其编码为二进制。最早的计算机使用一个字节(8bit)来表示一个数据,此时的编码称为 ASCII 编码,该编码能表示大小写英文字母、数字和一些符号,共 255 个字符。
对于汉字、日文和韩文等语言则无法使用 ASCII 码来表示。为此,各个国家制定了不同的编码来表示各自的文字。由于这些不同语言的文字编码并没有完全兼容,所以在进行转码时很可能会出现乱码。为了解决这个问题,就需要将不同语言的编码进行统一。为此 Unicode 编码应运而生。
Unicode 将所有语言都统一到一套编码里,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,从而实现跨语言、跨平台的文本转码。Unicode 通常用两个字节来表示一个字符,而原来使用 ASCII 编码的字符则通过将高字节全部补 0 的方式从单字节变成双字节字符。
js字符串的使用方式
(1)字符串直接量
字符串直接量就是直接引用单引号或双引号括起来的一组字符序列:
(2)字符串变量
字符串变量是指值为字符串直接量的变量。例如:var str = "哦耶";变量str为字符串变量
(3)字符串对象
字符串对象通过使用关键字new且包装字符串直接量来创建,创建格式如下: str就是字符串对象
对象既可以有存储数据的属性,又可以包含处理数据的函数。为了便于对字符串直接量和字符串变量的处理,JavaScript 处理它们时,首先会将其转换为一个伪对象(等效于字符串对象),因而字符串直接量和字符串变量也具有属性和方法,这些属性及方法和字符串对象的属性和方法是完全一样。
由于创建字符串对象需要对字符串直接量进行包装,从而有可能拖慢执行速度,并可能产生其他副作用,所以在实际项目中尽量不要对字符串创建对象,而应直接使用字符串直接量进行处理,或先将其存储在一个变量中,然后针对字符串变量进行操作。
注意1:
在JS中,会自动在字符串与字符串对象之间进行转换,因此,任何一个字符串常量都可以看作是一个String对象,其可以直接作为对象使用,只要在字符串变量的后面加 “.” 便可以直接调用String对象的属性和方法。
字符串与String对象的不同在于返回的typeof值,前者返回的是string类型,后者是Object类型。
字符串直接量、字符串变量和字符串对象三者具有相同的属性和方法
注意2:
字符串转义字符( \ )
字符串直接量可以拆分成数行,但每行必须以反斜线(\)结束,反斜线和行结束符都不算是字符串直接量的内容。
在反斜杠(\)后面加符号 . 可以把特殊字符转化为字符串字符。
可以去JavaScript 字符串 详细查看。
---------------------------------------------------------------------------------------------------------------------
JS字符串和数据类型的相互转换
:js转换类型分为两种
隐式类型转换(自动转换) 和 显式类型转换(手动强制转换)
隐式转换
当运算符运算时,运算符两边的数据类型不统一时。编译器会自动将两边数据类型转换为同一种类型在运算。
常见的隐式转换:
-- 逻辑语句的类型转换:当使用if() ,while() ,for() 等判断语句,就会隐式转换为boolean值 true或false.
--逻辑表达式:
! 逻辑非,隐式转换为布尔值,并取反,!!两次逻辑非,隐式转换为布尔值;
|| 和 && 会将非布尔值操作数,隐式转换为布尔值,再判断;
--算数表达式
加减,乘法,除法,求模,隐式转换为 Number;
运算中:
不同类型之间的拼接: 转化为字符串
显示转换
-转换为字符串:toString() 或 String()
-转换为数值:Number()、parseInt()、parseFloat()
-转换为布尔值:Boolean()
-转换为对象:Object()
测试:
toString() 或 String()
Number()
使⽤Number()函数来对string进⾏强制类型转换是最直接的做法。不过,这种做法有⼀个局限性:如果字符串截去开头和结尾的空⽩字符
后,不是纯数字字符串,那么最终返回结果为NaN。⽤Number()函数来进⾏string-to-number转换时,函数只接受10进制字符串,但测试结果表明事实并⾮如此,Number()函数可以接
受”0xff”作为参数并将其转换成数值255。
parseInt()
parseInt()函数可以将字符串转换成⼀个整数,与Number()函数相⽐,parseInt()函数不仅可以解析纯数字字符串,也可以解析以数字开头
的部分数字字符串(⾮数字部分字符串在转换过程中会被去除)。值得注意的是,当parseInt()函数所解析的是浮点数字符串时,取整操作所
使⽤的⽅法为“向下取整”(truncate)。
除了字符串作为第⼀个参数,parseInt()函数还可以接受2到36之间的任意整数作为第⼆个参数,⽤于指定转换过程中的进制数。
parseFloat()
与parseInt()⼀样,parseFloat()也可以解析以数字开头的部分数字字符串(⾮数字部分字符串在转换过程中会被去除)。与parseInt()不同的
是,parseFloat()可以将字符串转换成浮点数;但同时,parseFloat()只接受⼀个参数,且仅能处理10进制字符串。
Boolean()
字符串直接转换为Boolean 全为true
Object()
在用Object()直接转换为String ,会返回一个以键为下标索引 值为字符串的子字符串 ,获取子字符串可以直接 [ 下标 ] 获取:
在对象和字符串之间转换还有一种
注意: JSON.stringify() 和 JSON.parse()
JSON.string() ; 对象转换为字符串
JSON.parse() ; 字符串转换为对象
JSON: JavaScript Object Notation(JavaScript 对象标记法)。
JSON 是一种存储和交换数据的语法。
JSON 是通过 JavaScript 对象标记法书写的文本。
交换数据
当数据在浏览器与服务器之间进行交换时,这些数据只能是文本。
JSON 属于文本,并且我们能够把任何 JavaScript 对象转换为 JSON,然后将 JSON 发送到服务器。
我们也能把从服务器接收到的任何 JSON 转换为 JavaScript 对象。
以这样的方式,我们能够把数据作为 JavaScript 对象来处理,无需复杂的解析和转译。
字符串分割:
string.length;
返回字符串的长度
string.indexOf();
返回指定字符在字符串中第一次出现的位置的下标索引 ,无则返回 -1
string.lastIndexOf();
返回指定字符在字符串中最后一次出现的位置的下标
string.match();
返回指定字符在字符串中第一次出现的位置的详细信息,返回一个集合
string.replace('参数1','参数2');
替换字符串中的字符,参数(被替换字符,新的字符),不改变原数组。
被替换字符格式可以是Number/Boolean/String,根据字符串中的字符判定
string.search(' / ');
检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
string.charAt(索引);
根据索引查找字符串中对应的字符,返回查找的字符。
如果没找到对应下标的字符,返回空字符串。
string.split();
将字符串从指定字符开始分割,返回一个数组,不改变原数组。
也可以不指定字符
string.slice('参数1','参数2') ; 截取字符串
参数1 开始截取的下标 参数2 结束的下标
只有一个参数时,从(参数1)开始截取的下标,一直截取到字符串末尾,返回截取后的字符。
string.substr('参数1','参数2');
两个参数:1 开始的下标,2.截取几个字符,截取一部分字符,返回截取后的字符。
只有一个参数,从下标为几的位置开始截取,到字符串末尾,返回截取后的字符。
string.substring('参数1','参数2');
两个参数:1索引 2,截取两个下标之间的字符,不包含最后一个下标的字符,返回截取后的字符。
只有一个参数,从下标为几的位置开始截取,到字符串末尾,返回截取后的字符。
string转化大小写
string.toUpperCase( );将英文转换为大写
string.toLowerCase();将英文转换为小写
也可以遍历字符串