String详解

一,字符串概念

1,两种定义方式:

1, var str ='hello'
2,var object = new String('hello')

  new 关键字构建的都是 引用数据类型 / 对象

  引用数据类型的两个对象的值和对应的两个引用都不一样

 

2,两者的区别

  使用直接赋值。字符串的形式给定当前变量为基本数据类型,并返回转换后的值

  使用new String() 进行定义的形式 构建的是引用类型的对象

  new String() 里面的参数可以使任意类型 最后都会调用 toString 方法转为 String 类型

 1 var stra = new String(10)
 2 var strb = String('10')
 3 var strc = '10'
 4 var number = 10
 5 console.log(stra == strc)   //true
 6 console.log(strc == strb)   //true
 7 console.log(stra == strb)   //false
 8 console.log(strc == number) //true
 9 console.log(strc === number)    //false
10 console.log(stra === strc)  //false
11 console.log(stra == number) //true

 

二,字符串属性

  ECMAScript 字符串不可变 它是一个常量

  length 属性:字符串的长度length属性是不可以修改的,只能获取;

a,计算字符串的长度,一个字符为 1 个位置

b,也可以通过下标获取对应的字符,下标从 0 开始,到 length-1 结束

1 var str = '123'
2 console.log(str.length)     //输出 3   长度为 3
3 str.length = 10
4 console.log(str.length)     //输出 3  无法修改

 

三,字符串的常用方法

  字符串是一个容器,是有对应的增删改查的方法,但是由于字符串是常量是只读的。所有增删改查不会修改原来的字符串,而是返回一个新的字符串;

1,查询:

  a,通过对应下标查询对应的字符,相当于字符串的下标获取;

  b,charAt 查询,根据下标获取字符串,返回的是字符串,同上面的方法一样;

  c,charCodeAt 获取对应下标位置的 ASCII 码,编码操作;

1 var str = 'abc'
2 console.log(str.charCodAt(0))   
3 //获取下标为 0 的字符串 'a' 的ASCII码 返回64

 

  d,String.fromCharCode 将 ASCII 转换为 字符串,解码操作。

它是静态的方法,同 Math 方法一样,是系统内置的静态方法

1 var strCode = String.fromCharCode(100)
2 console.log(strCode);       //返回  d

 

  e,indexOf 查询,根据字符串来返回第一次出现的下标,找不到返回 -1 ;

  f,lastindexOf 查询,同上运行方法是一样的,不过它是从后往前查的;

1 var str = 'abca'
2 str.indexOf('a')    //返回 0
3 str.indexOf('a', 0)     //返回 0
4 str.indexOf('a', 1)     //返回 3

 

  g,search 查询:它搜索的内容必须要连在一块,返回第一个匹配的位置,返回为当前找到的下标,找不到则返回 -1 ;

 

2,替换方法:replace()

  replace() 替换字符串:替换只能执行一次,不能够进行全局匹配,如果需要全局匹配,则需要正则表达式;

 

3,截取方法:substring();sub( );substr( );slice( );

  substring( ) 从开始位置到结束位置截取,返回新的字符串;

  substr( ) 截取字符串,返回字符串,第一个是字符串下标,第二个参数规定被提取部分的长度

  sub( ) 将内容填充到 sub 的html标签中,然后生成一个新的字符串进行返回;

  slice( ) 和 substring( ) 一样,但里面的起始和结束可以不写,不包括最后一位,不写就是全部截取;

 

4,分割方法:split() 可以使用正则

  split(separator,howmany) 分割为数组,数组的 join 连接为字符串。可以正则截取,返回值为 string 类型数组;

  separator(字符串或正则表达式)

  howmany(可以指定返回的数组的最大长度, 可以省略) 就是返回数组的个数;

  注:如果空字符串(“”)用作separator, 那么stringObject中的每个字符之间都会被分割。

 

5,连接方法:" + " 号 ; concat( );

  concat( ) : 将需要连接的字符串连接在后面,返回一个新的字符串;

 

6,去前后空格:trim( ) 没有参数,返回一个新的值;

7,包含:includes( ) 返回的是布尔值,找是否包含这个字符串

8,toString 方法:转为 string 类型; valueOf( ) 方法:返回对应的原本的值;

9,大小写转换

1、转换成大写:toUpperCase()
2、转换成小写:toLowerCase()

 

四,扩展--正则表达式和常用方法

  RegExp 正则对象 一般以两个 // 包起来

  a,/^ $/ ^ 表示开头,$ 表示结尾

1 var reg = /^abc$/   
2 var str = 'cbacbaabcabc'
3 console.log(str.search(reg));   
4 //查找正则匹配的abc出现第一次的位置 因为search搜索的内容必须连在一块  返回结果 -1 
5 var str1 = 'abc'
6 console.log(str1.search(reg));  
7 //返回 0 必须以a开头  c结尾  中间包含b

 

  b, [ ] 表示元素其中一个, { } 表示个数

1 var str = 'abcefg'
2 var rex = /[df]/    //匹配其中一个即可
3 console.log(str.search(rex))    //返回 4
4 var str = 'acabcefg'
5 var rex = /[ab]{2}/ 
6 //匹配的个数为俩个,匹配的项为ab,aa,bb,ba;
7 console.log(str.search(rex))    //返回 2

 

  c, + 表示一个或者多个

1 var str = 'bbaacca'
2 var rex = /[a]+/        
3 //匹配的项为 a, aa, aaa, aaaa, ......
4 console.log(str.search(rex));   //返回 2

 

  d,在 [ ] 内可以用 - 表示区间,但必须是正的区间,也就是按照 ASCII 码表的顺序排序

1 var rex = /[A-Z]/   //匹配的是A,B,C,D......Z  26个字母
2 var rex = /0-9/     //匹配的是0,1,2,......9  10个数值

 

  e,\w 表示字母,数字,下划线 \W (大写) 相反 除了字母,数字,下划线其它都匹配

1 var rex = /\w/      //匹配字母 数字 及下划线
2 var str = '_1234abc'
3 console.log(str.serach(rex));       //返回 0

 

  f,\s 空白字符 \S(大写) 非空白字符

posted @ 2022-04-11 21:07  AVEGER  阅读(134)  评论(0)    收藏  举报