字符串
JS中的基本类型数据之一。
存储: 计算机只能够存储二进制 所以存储字符串时 也需要转为二进制 所以就需要有一个对照表 方便将字符和二进制进行转换 这样的内容叫做编码方式 常见的有 ascii unicode 等
定义
- 字面量
—JavaScript
var str = ‘’;
var str1 = “”;
- 构造函数
—JavaScript
var str = new String(“abcdefg”);
console.log(str); //String{“abcdefg”}
console.log(str.toString()); // “abcdefg” toString表示转为字符串
console.log(str.valueOf()); // “abcdefg” valueOf 获取原始值 也叫做字面量值
注: 这样得到的是一个 字符串对象 注意是对象
包装类型:在面向对象的思想中,一切都得是对象。而JS中有一些基本类型,此时就需要“包装”一下,将这些基本类型包装成对象类型。
字符串也有length属性
—JavaScript
var a = “abcdefg”;
console.log(a[2]); // c
字符串也可以通过下标获取对应的字符
var str = new String(“abcdefg”);
// console.log(str);
// 获取str的下标5的项
// var str1 = str.charAt(5);
// console.log(str1);
// 获取str的下标5的项
// console.log(str[5]);
- 循环
- for (var i in str) {
console.log(str[i]);
}
- for (var i = 0; i < str.length; i–) {
console.log(str[i]);
}
- 比较
- 比较规则: 拿着两个字符串的第一位比较编码 如果分出胜负就出结果 如果相同 去比较第二位的编码 以此类推
方法
- charAt(index) 选择字符方法
- index 数字
- 返回值 字符串中 index 下标位置的字符
- charCodeAt(index)
- index 数字
- 返回值 字符串中 index 下标位置的字符的UNICODE编码
- concat 连接方法 参数任意个 必须都是字符类型 如果不是会转为字符串
- 返回值 按照参数顺序拼接出来的字符串
- slice(start, end) 字符串截取方法
- start 截取的开始位置(包含)
- end 截取的结束位置(不包含)
- 返回值 截取的字符串
- substring(start, end) 字符串截取方法
- start 截取的开始位置(包含)
- end 截取的结束位置(不包含)
- 返回值 截取的字符串
- (a)从 a 开始截取到最后
- () 全部截取
> 注: 两个数总是从较小的截取到较大的 当数值为负数时 不会从后往前数
- substr(start, length) 字符串截取方法
- start 截取的开始位置
- end 截取的长度
- 返回值 截取的字符串
- split(arg) 字符串分段方法 > 字符变成数组 join把数组变为字符 用括号里的代替
- arg 字符串
- 返回值 以arg分段之后得到的数组
- replace(a, b); 替换函数 以b替换a
- a 被替换下的字符串
- b 被替换上的字符串
- 返回值 替换之后的字符串
- indexOf(str, pos) 搜索方法
- str 被搜索的字符串
- pos 搜索的开始位置
- 返回值
- 如果搜索得到 就是str在原字符串中的第一个字符的下标
- 如果没有就是-1
- search(str) 搜索方法
- str 被搜索的字符串
- 返回值 str在原字符串中的第一个字符的下标 如果没有就是-1
- match(str) 匹配方法
- str 匹配的字符串
- 返回值
- 如果匹配得到 返回数组
- 数组的第0项是 匹配到的成员 也就是参数str
- 数组有一个index属性 表示匹配到的字符串第一个字符在原字符串中的下标
- 数组有一个input属性 表示原字符串
- 如果匹配不到 返回null
- toUpperCase() 转大写
- toLowerCase() 转小写
- trim 去两端空格
- ES6 方法
- startsWith 判定一个字符串是否以另一个字符串开头
- startsWith("hello");从头检测
- str.startsWith("llo", 2);从指定的位置检测
- endsWith 判定一个字符串是否以另一个字符串结尾
- str.endsWith("world");检测尾部
- str.endsWith("wo", 8);检测指定位置是否以指定字符结尾
- includes 检测是否包含指定字符串
- str.includes("o")
- str.includes("o", 7);
郑重声明: 所有的字符串方法都不会改变原字符串
为什么字符串居然能够调用方法,它不是基本数据类型吗?
值类型就是值类型 不应该拥有任何方法的
—JavaScript
var a = “str”;
var b = a.replace(“s”, “a”);
字符串这个数据类型,在JS中运行时
JS引擎中解析的时候会先把 a 这个"str"值替换为 var s = new String(“str”);
当a.replace方法调用的时候 等价于
—JavaScript
var s = new String(“str”);
var b = s.repalce(“s”, “a”);
s = null;
因为真正操作的时候是新生成的对象内部在操作 a所保存的"str"只是作为参数传递了进去 在里面复制了一份 操作的是这个"副本" 最终会销毁这个生成的对象
多行字符串 es6
在ES6之前 所有的字符串只能是单行字符串 单引号与双引号定义的都是单行
- 定义语法
- ES6定义多行字符串方式 –
- 按键位置: 横向数字键1左侧 tab键上侧 esc键下方
- 插值语法
- ${}占位符:
注: 内 是 一 个 J S 执 行 环 境 , 可 以 放 变 量 , 可 以 放 表 达 式 , 可 以 调 用 方 法 可 以 直 接 在 模 板 字 面 量 中 插 入 占 位 符 {}内是一个JS执行环境,可以放变量,可以放表达式,可以调用方法 可以直接在模板字面量中插入占位符 内是一个JS执行环境,可以放变量,可以放表达式,可以调用方法可以直接在模板字面量中插入占位符{}。
占位符就如同一个普通字符串一样,可以插入到字符串中的任意位置。
大括号中可以是任何合法的表达式,并返回此表达式的值,通过占位符可以实现灵活的拼接操作。
- ${}占位符: