字符串的理解
1. 字符串的属性
str.length
2. 字符串的方法
charAt()
charCodeAt()
indexOf()
lastIndexOf()
slice()
substring()
substr()
includes()
startsWidth()
endsWidh()
toLowerCase()
toUpperCase()
trim()
splite()
内容
1. 字符串的属性
str.length。长度,字符串中字符的个数
2. 字符串的方法:
关注:名称、参数、返回值
2.1 charAt()
理解:根据位置返回指定的字符.
使用:str.charAt(index)
参数:index : 一个介于0和字符串长度减1之间的整数。 (0~length-1),如果没有提供索引,charAt() 将使用0。
返回值:String字符,字符串中对应位置上的字符,没有就是undefined
原字符串:不变 2.2 charCodeAt()
理解:根据位置返回指定的字符在Unicode中的编码。
使用:str.charCodeAt(index)
参数:index : 一个介于0和字符串长度减1之间的整数。 (0~length-1),如果没有提供索引,charCodeAt() 将使用0。
返回值:Number,数字,该字符对应的Unicode编码
原字符串:不变
    let str1 = 'abc';
let res1 = str1.charAt(2);
let res2 = str1.charCodeAt(0);
console.log(res1); //c
console.log(res2); //
2.3 indexOf(),lastIndexOf()
理解:一个字符在一个字符串的位置
使用:str.indexOf(str,num),str.lastIndexOf(str,num)
参数:传入一个字符,第二个参数是指从第几个字符开始
返回值:Number (0~length-1),不存在就返回-1
原字符串:不变
    let str1 = 'abca';
let res1 = str1.indexOf('a');
let res2 = str1.lastIndexOf('a');
console.log(res1); //
console.log(res2); //
2.4 slice()
理解:从字符串中截取字符
使用:str.slice(),str.slice(num),str.slice(num1,num2)
参数:没有参数,从0开始截取;
一个参数,从num开始截取到最后
两个参数,从num1开始截取到num2,包括num1,不包括num2
参数可以是负数,length+负数
参数是顺序,后面小于前面就不截取
返回值:截取的字符
原字符串:不变
 //注意:第一个参数包含,第二个参数不包含;支持负数,负数会转化成0;不支持倒序,将小的数放在前面
let str1 = '012345';
let res1 = str1.slice(); //没有参数
let res2 = str1.slice(2); //一个参数
let res3 = str1.slice(1,2); //两个参数,第一中情况,第一个参数比第二个参数大
let res4 = str1.slice(2,1); //两个参数,第二中情况,第一个参数比第二个参数小
let res5 = str1.slice(2,-1); //两个参数,第二中情况,参数是负数 console.log('原字符串',str1); //
console.log(res1); //
console.log(res2); //
console.log(res3); //
console.log(res4); //
console.log(res5); //
2.5 substring()
理解:从字符串中截取字符
使用:str.substring(),str.substring(num),str.substring(num1,num2)
参数:没有参数,从0开始截取;
一个参数,从num开始截取到最后
两个参数,从num1开始截取到num2,包括num1,不包括num2
参数不可以是负数,就从0开始
参数是可以顺序可以倒序,后面小于前面,两个数字就倒一下,再截取
返回值:截取的字符
原字符串:不变
//注意:第一个参数包含,第二个参数不包含;不支持负数,负数会转化成0;支持倒序,将小的数放在前面
let str1 = '012345';
let res1 = str1.substring(); //没有参数
let res2 = str1.substring(2); //一个参数
let res3 = str1.substring(1,2); //两个参数,第一中情况,第一个参数比第二个参数大
let res4 = str1.substring(2,1); //两个参数,第二中情况,第一个参数比第二个参数小
let res5 = str1.substring(2,-1); //两个参数,第二中情况,参数是负数 console.log('原字符串',str1); //
console.log(res1); //
console.log(res2); //
console.log(res3); //
console.log(res4); //1-------
console.log(res5); //01-------
 
2.6 substr()
理解:从字符串中截取字符
使用:str.substr(index,length)
参数:从第index开始截取长度为length的字符
返回值:截取的字符
原字符串:不变
//注意:第一个参数包含,第二个参数不包含;支持负数,负数会转化成0;支持倒序,将小的数放在前面
let str1 = '012345';
let res1 = str1.substr(); //没有参数
let res2 = str1.substr(2); //一个参数
let res3 = str1.substr(1,2); //两个参数,第一中情况,第一个参数比第二个参数大
let res4 = str1.substr(2,1); //两个参数,第二中情况,第一个参数比第二个参数小
let res5 = str1.substr(-2,1); //两个参数,第二中情况,参数是负数 console.log('原字符串',str1); //
console.log(res1); //
console.log(res2); //
console.log(res3); //
console.log(res4); //
console.log(res5); //
 
2.7 includes()
理解:字符串中是否包含某个字符
使用:str.includes(str)
参数:某个字符
返回值:true/false
原字符串:不变
    let str1 = '012345';
let res1 = str1.includes('4');
let res2 = str1.includes('9'); console.log(res1); //true
console.log(res2); //false
 
2.8 startsWidth(),endsWidh()
理解:字符串是否已某个或某串字符开始/结束
使用:str.startsWidth(str),str.endsWidh(str)
参数:某个字符
返回值:true/false
原字符串:不变
    let str1 = '012345';
let res1 = str1.startsWith('0');
let res2 = str1.startsWith('01');
let res3 = str1.startsWith('2'); console.log(res1); //true
console.log(res2); //true
console.log(res3); //false
    let str1 = '012345';
let res1 = str1.endsWith('5');
let res2 = str1.endsWith('45');
let res3 = str1.endsWith('2'); console.log(res1); //true
console.log(res2); //true
console.log(res3); //false
2.9 toLowerCase(),toUpperCase()
理解:将字符串转出小写/大写
使用:str.toLowerCase(),str.toUpperCase()
参数:没有参数
返回值:字符串
原字符串:不变
    let str1 = 'ABC';
let res1 = str1.toLowerCase(str1); console.log('元素字符串',str1); //ABC
console.log(res1); //abc let str2 = 'abcd';
let res2 = str1.toUpperCase(str1); console.log('元素字符串',str2); //abc
console.log(res2); //ABC
2.10 trim()
理解:将字符串前面和后面的空格去掉
使用:str.trim()
参数:没有参数
返回值:字符串
原字符串:不变
    let str1 = ' 012345 ';
let res1 = str1.trim(); console.log('原字符串','vv'+str1+'vv'); //vv 012345 vv
console.log('vv'+res1+'vv'); //vv012345vv
2.11 concat()
理解:合并字符串
使用:str.concat()
参数:没有参数
返回值:合并之后的字符串
原字符串:不变
    let str1 = '012345';
let res1 = str1.concat('abc'); console.log('原字符串',str1); //
console.log(res1); //012345abc

2.12 split()
理解:合并字符串
使用:str.split()
参数:没有参数
返回值:转换之后的数组
原字符串:不变
    let str1 = '012345';
let res1 = str1.split(''); console.log('原字符串',str1); //
console.log(res1); //["0", "1", "2", "3", "4", "5"]
2.13 padStart()
理解:合并字符串
使用:str.padStart(),str.padStart(1),str.padStart(1,'a')
参数:没有参数,第一个参数是数字,第二个参数是字符串
返回值:往字符串最前面添加字符
原字符串:不变
    let str1 = '012345';
let res1 = str1.padStart('2'); //一个参数,数字比位数小
let res2 = str1.padStart('8'); //一个参数,数字比位数大,没有第二个参数用空格填充
let res3 = str1.padStart('7','a'); console.log(res1); //
console.log('vv'+res2); //vv 012345
console.log(res3); //a012345
2.14 padEnd()
理解:合并字符串
使用:str.padEnd(),str.padEnd(1),str.padEnd(1,'a')
参数:没有参数,第一个参数是数字,第二个参数是字符串
返回值:往字符串最后面添加字符
原字符串:不变
    let str1 = '012345';
let res1 = str1.padEnd('2'); //一个参数,数字比位数小
let res2 = str1.padEnd('8'); //一个参数,数字比位数大,没有第二个参数用空格填充
let res3 = str1.padEnd('7','a'); console.log(res1); //
console.log(res2+'vv'); //012345 vv
console.log(res3); //012345a

————————

2.15 regexp.test(str):
用法:正则/.test(字符串)
作用:检测字符串中是否存在正则所匹配的内容
返回值:存在返回true,否则返回false
// test---QQ号码校验
let str1 = 'a33345';
let str2 = '323a222';
let str3 = '22222344';
let reg = /^[1-9]\d{4,10}$/; let res1 = reg.test(str1);
let res2 = reg.test(str2);
let res3 = reg.test(str3); console.log(res1); //false
console.log(res2); //false
console.log(res3); //true
// test---手机号码校验
let str1 = 'a33345';
let str2 = '23333';
let str3 = '13333';
let str4 = '12234432123';
let reg = /^[1-9]\d{10}$/; let res1 = reg.test(str1);
let res2 = reg.test(str2);
let res3 = reg.test(str3);
let res4 = reg.test(str4); console.log(res1); //false
console.log(res2); //false
console.log(res3); //false
console.log(res4); //true
2.16 str.match():
用法:字符串.match(正则/字符串)
作用:在字符串中查找参数所匹配的内容,并把内容保存在一个数组中返回
参数:正则/字符串
返回值:数组
注意:全局和懒惰模式下的区别
    let str1 = 'ma1ddddma2ggggma3';
let res1 = str1.match('ma'); //参数是字符串
let res2 = str1.match(/ma\d/); //参数是正则
let res3 = str1.match(/ma\d/g); //参数是正则
let res4 = str1.match(4); //参数是正则 console.log(res1); //["ma", index: 0, input: "ma1ddddma2ggggma3", groups: undefined]
console.log(res2); //["ma1", index: 0, input: "ma1ddddma2ggggma3", groups: undefined]
console.log(res3); //["ma1", "ma2", "ma3"]
console.log(res4); //null
2.17 str.search():
用法:字符串.search(正则/字符串)
作用:在字符串中搜索参数中所匹配的内容首次出现的位置
参数:正则/字符串
返回值:返回位置,没有-1
注意:和indexOf的区别
indexOf不支持正则
search支持正则
    let str1 = 'ma1ddddma2ggg2gma3';
let res1 = str1.search('2'); //参数是字符串
let res2 = str1.search(/\d/); //参数是正则
let res3 = str1.search(/\d/g); //参数是正则
let res4 = str1.search(4); //参数是正则 console.log(res1); //
console.log(res2); //
console.log(res3); //
console.log(res4); //-1
2.18 str.replace():
str.replace(/正则/,新的字符):
str.replace(/正则/,fn(con,a,b,c)):
作用:在字符串中搜索指定内容,并使用新的内容去替换 用法1:字符串.replace(要查找的字符串,新的字符串)
参数:要查找的字符串,新的字符串
返回值:返回新的字符串,不改变原字符串 用法2:第二个参数可以是一个回调函数,每一次的匹配,都会执行一次回调函数,并把回调函数的返回值作为新的内容,
参数:要查找的字符串,fn
fn的参数:第一个参数是匹配的内容,第二个及以后是子项,即()里面的内容
返回值:回调函数的返回值作为新的内容
    let str1 = 'ma1ddddma22ggg222gma3333';
let res1 = str1.replace('2','*'); //参数是字符串,字符串
let res2 = str1.replace(/ma\d/g,'*'); //参数是正则,字符串
let res3 = str1.replace(/\d/g,function (con) {
var s='';
for(var i=0; i<con.length; i++){
s+='*';
}
return s;
}); console.log('原始',str1) //ma1ddddma22ggg222gma3333
console.log(res1); //ma1ddddma*2ggg222gma3333
console.log(res2); //*dddd*2ggg222g*333
console.log(res3); //ma*ddddma**ggg***gma****
// replace---敏感词替换
let str1 = 'js激发了对方css法律的纠js纷';
let res1 = str1.replace(/js|css/g,function (con) {
var s='';
for(var i=0; i<con.length; i++){
s+='*';
}
return s;
}); console.log('原始',str1) //js激发了对方css法律的纠js纷
console.log(res1); //**激发了对方***法律的纠**纷
    let str1 = 'js11激发了对方css222法律的纠js4343纷';
let res1 = str1.replace(/(js)(\d*)/g,function (con,tt,mm) {
console.log(con,tt,mm)
var s='';
for(var i=0; i<mm.length; i++){
s+='*';
}
return tt + s;
}); console.log('原始',str1) //js11激发了对方css222法律的纠js4343纷
console.log(res1); //js**激发了对方css222法律的纠js****纷

包装对象的理解

问题:只有对象才有属性和方法,为什么字符串、数字、布尔值这些非对象类型的数据可以调用属性和方法?
解决:当我们去访问一个基本数据类型(字符串,数字,布尔值)数据下的属性或方法的时候,js内部会根据当前这个数据的类型,调用与其对应的构造函数,使用其值创建一个对应类型出来。我们把这个称为:包装对象。
例子:
var str = 'miaov';
str.length => str是基本类型,没有属性,包装:在内部创建一个与该类型一样的虚拟对象,var tempStr = new String(str),return tempStr.length,我们把这个称为:包装对象。
所以,字符串方法,数字方法,布尔值方法,操作都不会改变原有的数据。

改变字符串的方法:trim,padStart,padEnd

合并字符串从concat不改变原字符串


字符串String的API的更多相关文章

  1. Java基础——数组应用之字符串String类

    字符串String的使用 Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的. Java中没有内置的字符串类型,而是在标准Java类库中提供了一 ...

  2. Delphi的字符(Char),字符串(String),字符串指针(PChar),字符数组arrayofchar(来自http://delphi.cjcsoft.net/论坛)

    Delphi有三种类型的字符: AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉. WideChar这是2字节的Unicode字符. Char在目前相当于AnsiChar,但在De ...

  3. Java入门篇(五)——Java的字符串/String类

    前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...

  4. Java入门篇(五)——字符串/String类

    前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...

  5. Effective STL 学习笔记 Item 16:vector, string & C API

    有时需要支持 C 的接口,但这并不复杂. 对于 vector 来讲, \(v[0]\) 的地址 \(\&v[0]\) 即可作为数组指针传递给 C API: 1: // Legacy C API ...

  6. 详解 字符串—— String、StringBuffer 与 StringBuilder

    本来这篇博文的内容,本人打算在之后的代码中一点一点通过实例讲解的,但是,本人发现,其实这里的知识点还是蛮重要的. 并且,字符串类型,在任何的程序语言中都是被认真对待的,所以,今天专门写一篇博文来介绍一 ...

  7. String常用API

    String常用API 1. 获取字符串长度 int length = str.length(); 2. 根据索引,返回字符串中对应的字符 char c = str.chaeAt(length-1); ...

  8. javascript类型系统——字符串String类型

    × 目录 [1]定义 [2]引号 [3]反斜线[4]特点[5]转字符串 前面的话 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串S ...

  9. C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)

    在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...

随机推荐

  1. jsp请求转发与重定向区别小结

    1.当使用转发时,JSP容器将使用一个内部方法来调用目标页面,新的页面继续处理同一个请求,而浏览器不会知道这个过程; 2.重定向是第一个页面通知浏览器发送一个新的页面请求. 3.转发不改变URL,重定 ...

  2. Mysql服务配置优化

    mysql服务器优化包含 硬件优化.操作系统配置优化(cpu调度.网络.内存.虚拟内存.磁盘io).Mysql服务配置优化(最大连接数.表缓存等.存储引擎).表结构优化.索引优化 总共5个方面. 本片 ...

  3. 安装Ruby、Sass在WebStrom配置Scss编译环境css自动压缩

    安装Sass和Compass sass基于Ruby语言开发而成,因此安装sass前需要安装Ruby.(注:mac下自带Ruby无需在安装Ruby!) window下安装SASS首先需要安装Ruby,先 ...

  4. 事务理解及Spring中的事务

    一.隔离级别理解 1.脏读 首先理解,一个事务对数据进行了改变,尽管该事务尚未提交,但此时其他事务中的查询语句(注意一定是处于事务中的语句,不处于事务中的语句查到的是正常的)查到的数据,是该事务修改之 ...

  5. ionic3 使用swiper插件 实现轮播效果

    由于app的更新迭代 我需要完成新版本设计图的开发 刚开始就遇到一个问题  首页的banner图需要实现某种效果 而ionic3自带的轮播图效果怎么改都改不到我想要的效果 效果图如下  自动播放 不断 ...

  6. Neo4j图数据库使用

    最近在处理一些图的数据,主要是有向图,如果图的节点不是特别大可以直接加载到内存里来处理,但是当图的节点个数特别大时,内存就放不下了:我 们牵涉到的图的节点数最大可以达到数亿个节点,已经超出的机器内存的 ...

  7. GPU知识了解

    前言 今天在使用阿里云的时候,无意间看到了有GPU服务器,于是对它做了一个大概的了解. 概念 GPU是Graphics Processing Unit的缩写,翻译成中文就是图形处理器.是一种专门在个人 ...

  8. 剑指Offer 9. 变态跳台阶 (递归)

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目地址 https://www.nowcoder.com/practice/ ...

  9. UncaughtExceptionHandler

    虽然大家都不愿意看到程序崩溃,但可能崩溃是每个应用必须面对的现实,既然崩溃已经发生,无法阻挡了,那我们就让它崩也崩得淡定点吧. IOS SDK中提供了一个现成的函数 NSSetUncaughtExce ...

  10. linux 创建sudo账号.md

    内容来源自网络 方案一 root登录 ssh root@server_ip_address 新增用户 adduser username 设置密码 passwd username 输入两次密码 修改帐户 ...