day07 字符串-笔记

74 阅读4分钟

JS字符串

字符串介绍

JS字符串的概念

  字符串就是一串字符,由双(单)引号括起来。
  字符串是 JavaScript 的一种数据类型。 

字符串的定义和使用

字符串的定义

方式一(推荐):  var str = ‘亲’;    //基本类型 
定义了一个字符串变量str,内容为'亲'

方式二: var str = new String(“hello”);       //引用类型
定义一个字符串变量str,内容为hello,
注意: 此刻str为引用类型(object对象)
       用new产生的变量都是引用类型的变量,也叫对象
方式三: var str = String(‘hello’);
基本类型: string, number, boolean, undefined,null等
引用类型/对象: Array , Date, Object, String, Function//
new String()和String()的区别
var s1 = new String(‘hello world’);
var s2 = String(‘hello world’);
console.log(typeof s1); //object
console.log(typeof s2); //stringString()和元素符new一起使用, 那么String()是作为构造函数使用的,它返回的是一个新创建的String
对象.
当不用new运算符调用String()时,它只是转换成原始的字符串,并返回转换后的值.

装箱与拆箱的概念

值类型-->转换--->引用类型 装箱

new 装箱

引用类型 --> 转换-->值类型 拆箱

toString() 拆箱

字符串的属性

length:  表示字符串的长度
   例如 :  var str = “how are you”;
                console.log(str.length);
                console.log(str[0]);  //获取字符串中对应下标的字符

注意: ECMAScript 中的字符串是不可变的; 也就是说,字符串一旦创建,它们的值就不能改变.
   例如:  var str = “亲,包邮哦”;
               str[0] = “唉”;  //str内容不会改变

如果要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量.
var str =  “Hello”;
str = str+” world!”;

字符串的方法(函数)

字符串的方法(函数)
1.str.charAt(3): 获取下标为3的字符

2.str.charCodeAt(3) 获取下标为3的字符的编码(ASCII码)

3.String.fromCharCode(94); ASCII编码转换成字符
      该方法是String的静态方法,所以用String调用,       
      如:var str = String.fromCharCode(98,99); //可传入多个参数

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)

4.查找
  4.1 search 找到了返回下标,找不到返回-1
      支持正则
  var str = "abc123";
  console.log(str.search("c"));2
  console.log(str.search("z"));-1
  console.log(str.search(/a/));/a/是正则表达式 输出0

  4.2 indexof 找到了返回下标,找不到返回-1
      第2个参数,默认是从0开始,也可以指定位置
      不支持正则
  var str = "abc123";
  console.log(str.indexOf("c"));2
  console.log(str.indexOf("z"));-1
  console.log(str.indexOf(/a/));-1

  4.3 match 找到了返回数组,找不到 返回null 
  var str = "abc123";
  console.log(str.match("c"));  //返回数组
  console.log(str.match("1c")); //返回null

  4.4 lastIndexOf 从后往前找
  var str = "abc123abc";
  console.log(str.lastIndexOf("c")); // 8
  console.log(str.lastIndexOf("c", 5)); // 2

5.截取系列
  5.1  slice 包含开始位置,不包含结束
  var str = '台上有一位绝世美男子,今年18岁';
  console.log(str.slice(7, 10));// 美男子
  console.log(str.slice(7));// 美男子,今年18岁
  
  5.2  substring 包含开始位置,不包含结束,可以自动调整参数的顺序,大小顺序不影响
  var str = '台上有一位绝世美男子,今年18岁';
  console.log(str.substring(10, 7));// 美男子
  console.log(str.substring(7));// 美男子,今年18岁

  5.3 substr 第2个参数,表示截取的 个数
  var str = '台上有一位绝世美男子,今年18岁';
  console.log(str.substr(7));// 美男子,今年18岁
  console.log(str.substr(7, 3));// 美男子
  
6.合并  concat
  var str1 = "我是";
  var str2 = "美男子";
  var str3 = str1 + str2;
  var str4 = str1.concat(str2, "!");
  console.log(str3);//我是美男子
  console.log(str4);//我是美男子!

7.切割 返回一个新的数组
  var str = "abc-123";
  console.log(str.split());//['abc-123']
  console.log(str.split(""));//['a', 'b', 'c', '-', '1', '2', '3']
  console.log(str.split("-"));//['abc', '123']
  
8.替换
  var str = "台上有一个男子"; //男  --> 美男
  var str1 = str.replace("男", "美男");
  console.log(str);// 台上有一个男子
  console.log(str1);// 台上有一个美男子
  
9.转大写
  var str = "abc123";
  var str1 = str.toUpperCase()
  console.log(str1);//ABC123
  
10.转小写
  var str = "ABCDEGGSASDASDFD";
  var str1 = str.toLowerCase()
  console.log(str1);//abcdeggsasdasdfd

11.重复多少次
  var str = "我爱你!";
  var str1 = str.repeat(100);
  console.log(str1);//重复100次我爱你

12.字符串模板 ES6 
  // var s = "很";
  // var str = "今天天气" + s + "好";//很
  // console.log(str);

  var s = "很";
  var str = `今天天气${s}好`;
  console.log(str);//今天天气很好

其他应用
  var a = 10;
  var b = 20
  var str = "计算的结果:" + a + b;  
  console.log(str);//计算结果是1020

  var str = `计算结果是:${a + b}`;
  console.log(str);//计算结果是30

  var str1 = `aaa`;
  console.log(typeof str1); //string

13 trim() 去掉前后的空白
  var str = "     你好 帅哦!     ";
  console.log(str.trim());//你好 帅哦!
  console.log(str.trimEnd());//     你好 帅哦 去除后面的空白
  console.log(str.trimStart());//你好 帅哦!     去除前面的空白

14 padStart()
  var str = "我是帅哥";
  console.log(str.padStart(10, "."));//10位长度用.填充满前面 ......我是帅哥
  
15 padEnd(), 不够就填充
  var str = "我是帅哥";
  console.log(str.padEnd(10, "."));//10位长度用.填充满后面 我是帅哥......


16 includs 是否包含
  var str = "abc123";
  console.log(str.includes("1c"));
  
g global 全局
  var str = "H e  l  ** l    o    Wo r         L d  !";//要正确表示*得转义成:\*
  console.log(str.replace(/\*/g, "").replace(/ /g, ""));//HelloWorLd!