string的包装类型

字符串有长度属性,但是又说只有对象才有属性和方法。

实际上:
在使用字符串的属性或方法时,JS会给我们创建一个值相同的基本包装类型对象,再调用这个对象的属性和方法,这个对象使用完毕后会立刻删除掉。

var str1 = "abc";
var str2 = new String("abc");//string的包装类型//简单数据类型无法绑定属性和方法。
str1.aaa = 111;
str2.aaa = 222;
console.log(str1.aaa);//undefiend
console.log(str2.aaa);//222console.log(str1.length);
console.log(str1.indexOf("b"));//隐式转换,调用属性和方法的时候,
// 简单类型转换成了包装类型,使用完毕方法或者属性后又返回原来的简单数据类型。

str1和str2的本质:

基本包装类型

基本包装类型:Boolean、Number、String

什么是包装对象

当使用原始类型的值(string、number、boolean),在调用对应属性和方法的时候,内部会自动转成对应的对象。隐式创建的这个对象,就成为包装对象。

包装对象的特点

隐式创建对象后,可以调用对应的属性和方法,使用后,立马销毁,所以不能给原始类型的值添加属性和方法

引用类型和基本包装类型的主要区别就是对象的生存期

  • 使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。
  • 而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。

给索引查字符:charAt()

  • str.charAt(索引值) 可以根据索引取出str中的某一个字符
  • str[索引] html5添加的,ie9以上支持
  • charCodeAt(索引) 返回是这个字符的ASCII码,不常用

    //Unicode编码:   97-65-48 ==  aA0var str = "0Aabcdefg";console.log(str.charAt(2));//s  给索引查字符
    console.log(str[2]);//s  给索引查字符(h5新增,IE9以上支持)console.log(str.charCodeAt(0));//给索引查字符所对应的Unicode编码
    

给字符查索引indexOf()

  • str.indexOf();
  • str.indexLastOf();从字符串尾部开始寻找

    //给字符查索引,查不到返回值为-1;
    //如果字符特别长,包含完整的字符那么就是首字母的索引值。如果不全,返回值为-1;var str = "abcfdef";console.log(str.indexOf("b"));//1
    console.log(str.lastIndexOf("f"));//6
    console.log(str.lastIndexOf("x"));//-1
    console.log(str.lastIndexOf("abd"));//-1
    

字符串的连接:concat()

var str1 = "123";
var str2 = "abc";
var str3 = str1.concat(str2);//123abc

字符串切割成数组 split()

1:2:3:4:5".split(":");  // 返回 ["1","2","3","4","5"]"|a|b|c|".split("|");    // 返回 ["", "a", "b", "c", ""] "hello".split("");     // 返回 ["h","e","l","l","o"]"hello".split("", 3);  // 返回 ["h","e","l"]

String.split()执行的操作与Array.join()执行的操作相反。

字符串的截取:slice/substr/substring

1、string.slice(start, end)

slice:四种用法;两个参数都是索引值var str3 = "123abc";//单个参数
console.log(str3.slice(3));//abc
//两个参数
console.log(str3.slice(2,4));//3a
//负数
console.log(str3.slice(-4));//3abc
//前大后小:返回值为"";
console.log(str3.slice(3,0));

2、string.substr(start, length)

//substr(): (索引值,长度);//一个参数
console.log(str3.substr(3));//截取到最后
//两个参数
console.log(str3.substr(2,4));//截取的个数
//负数
console.log(str3.substr(-4));//截取后几个
//前大后小不研究:因为他是按照个数截取

3、substring:类比于slice方法。

//单个参数
console.log(str3.substring(3));
//两个参数
console.log(str3.substring(2,4));
//负数
console.log(str3.substring(-4));//获取所有
//前大后小:返回值为“”;
console.log(str3.substring(3,0));//智能调换

字符串的编码和解码

var url = "http://www.itcast.cn?username='nihao'&password=123123";//编码和解码
console.log(url);
var str1 = encodeURIComponent(url);
console.log(str1);//BOM的一个方法;
var str2 = decodeURIComponent(str1);
console.log(str2);

有关正则表达式的3个方法:search/replace/trim

1、replace(); 根据正则替换内容

var str = "Today ,today ,today ";//如果不用正则表达式,只把第一个today换成tomorrow
console.log(str.replace("today","tomorrow"));//Today ,tomorrow ,today //g是指全局替换(global)
console.log(str.replace(/today/g,"tomorrow"));//Today ,tomorrow ,tomorrow //i是指忽略大小写
console.log(str.replace(/today/ig,"tomorrow"));//tomorrow ,tomorrow ,tomorrowconsole.log("nihao2016".replace(/[\d]/g,""));

2、 trim(); 去除前后的空格

var str ="   haha   haha   ";
console.log(str.trim());//haha   haha

利用replace(),也可以实现trim()方法的功能:

//思路:找到前后的空白,然后用replace函数,把空白替换为""; var str ="   haha   haha   ";
function trimStr(string) {return string.replace(/(^\s+)|(\s+$)/g, "");
}console.log(trimStr(str));//haha   haha

3、search(); 给字符查索引

var str = "abcdefg";
console.log(str.search(/abc/));

字符串的特殊方法

localeCompare():包含

//localeCompare:包含
//    s1 > s2 返回正数,一般是1(包含)
//    s1 == s2 返回0(相等)
//    s1 < s2  返回负数,一般是-1(不包含)var str = "abcdefg";console.log(str.localeCompare("abc"));//1console.log(str.localeCompare("abcdefg"));//0console.log(str.localeCompare("xyz"));//-1console.log(str.localeCompare("abcdefgakdslfjhadkg"));//-1console.log(str.localeCompare("ac"));//-1

根据Unicode编码转换字符串

var str = String.fromCharCode(48,65,97);
console.log(str);

基本包装类型补充:

基本包装类型,boolean类型和number数值类型的基本包装对象我们一般不使用,因为是对象形式,会对使用造成影响。

比如boolean,如果是对象,在判断布尔的时候, 永远是true。

28 JS基础之--String包装数据类型方法总结相关推荐

  1. JavaScript -- 时光流逝(三):js中的 String 对象的方法

    JavaScript -- 知识点回顾篇(三):js中的 String 对象的方法 (1) anchor(): 创建 HTML 锚. <script type="text/javasc ...

  2. JS基础:基本包装类型

    首先,要了解这个概念,我们要明白什么基本包装类型和引用类型 基本类型和引用类型的值 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值 基本类型值指的是简单的数据段 引用类 ...

  3. js基础1 输入输出方式 数据类型

    1.javascript基本概念 js是一种解释型语言,可以边运行边编译,html的架构https://www.html5rocks.com/en/tutorlals/internals/howbro ...

  4. java string类方法_Java基础学习——String类及其方法

    String类概述 该类被final修饰,无子类,不可被复写.创建的对象一旦初始化,其内容不可被改变. String类复写了Object类中的equals()定义了自己的独特内容,该方法用于判断字符串 ...

  5. 【JS基础】类型转换——不同数据类型比较

    小试牛刀 输出下列数据比较结果 [] == 0; //==============================================================true[] == f ...

  6. js字符串: String对象的方法 + 半角空格、全角空格

    一.String 对象方法 方法 描述 anchor() 创建 HTML 锚. big() 用大号字体显示字符串. blink() 显示闪动字符串. bold() 使用粗体显示字符串. charAt( ...

  7. JS 基础(11月1日)

    文章目录 JS 概述 什么是 js 的组成? JS 的使用方式 变量 console.log(打印东西) 预解析 值的类型 检测类型的方式 值类型的转换 Number方法 parseInt(字符串转整 ...

  8. ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...

    JS中的数据类型 (一).基本数据类型(值类型) 1.number:数字 -12.12.5.-12.5 0这些数字都是number: js中增加了一个number类型的数据:'NaN' typeof ...

  9. js基础--数据类型检测的相关知识

    欢迎访问我的个人博客:www.xiaolongwu.cn 前言 最近工作有点忙,好几天都没更新技术博客了. 周末起床打开有道云笔记,发现自己的博客todolist里躺了一堆只有名字的文件. 话不多说, ...

  10. js php 数据类型判断,【js基础】变量类型判断

    类型判断方法比较: 如果需要想详细了解,请看下文: 注:原封不动复制备份,防止删帖 在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined, Null, B ...

最新文章

  1. 1024x600 7 LVDS LCD with Capacitive Touch for pcD
  2. Python开发笔记之正则表达式的使用
  3. 深入理解C指针之四:指针和数组
  4. 深度学习福利入门到精通第五讲——ResNet模型
  5. 自动驾驶—全局定位的学习笔记
  6. linux zookeeper 端口号,linux下zookeeper安装
  7. hibernate理解
  8. 计算机视觉实战(十)图像特征harris角点检测(附完整代码)
  9. Mac上恢复已删除或未保存的Word文档该怎么做
  10. 数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器
  11. 全图各省市乡镇数据交流
  12. 谷歌浏览器配置微信浏览器_微信网页版 - Chrome社交与通讯插件 - 画夹插件网
  13. 保证线程安全的10个小技巧
  14. JZOJ5401. 【NOIP2017提高A组模拟10.8】Star Way To Heaven prim求mst
  15. 噩梦系列篇之Player随鼠标转向控制
  16. docker版mongodb数据同步到elasticsearch
  17. Vue组件——数字滚动抽奖效果
  18. oracle财务软件导出报表,OracleFusion财务会计中心报表云服务-UAO.PDF
  19. Effective JavaScript Item 23 永远不要修改arguments对象
  20. DAC0832转换器

热门文章

  1. 11.1.4 子线程与主线程通信实例
  2. 聊天别被人家说的“职业技术”忽悠了
  3. swoole php配置文件,EasySwoole分离配置文件
  4. PTA 7-6 新胖子公式
  5. MD5生成与校验(Linux/UNIX/Windows)
  6. 使用phpStudy显示3306端口被占用,该怎么办?
  7. 抓包工具 - HttpWatch(功能详细介绍)
  8. 光伏抢装潮:630的得与失
  9. python计算器实验报告_python作业模拟计算器开发(第五周)
  10. wo-27s管理员账户和密码_“无法使用内置管理员账户打开”应用