字符串

关于我成长为前端高级工程师的前进之路

1.字符串

1.1字符串的概念

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

1.2字符串的定义

  • 方式一:字面量表达式
js 复制代码
var str = "hello world"; //基本类型
//定义了一个字符串变量str,内容为"hello world"
  • 方式二:通过String( )定义
js 复制代码
var str = String("hello world");
  • 方式三:构造函数创造字符串
js 复制代码
var str = new String("hello world"); //引用类型
//这里的str 为引用类型(object对象)
//用new产生的变量都是用来引用类型的变量,也叫对象
  • new String() 和 String()的区别
js 复制代码
var s1 = new String("hello world");
var s2 = String("hello world");
console.log(typeof s1);   //object
console.log(typeof s2);   //string
  • 当String() 和 元素符new 一起使用,那么String()是作为构造函数使用,它返回的是一个新创建的String对象.
  • 当不用new运算符调用String()时,它只是转换成原始的字符串,并返回转换的值

1.3 装箱和拆箱

  • 值类型-->转换-->引用类型 装箱
    • new 构造函数 装箱
  • 引用类型-->转换-->值类型 拆箱
    • toString() 拆箱

2.字符串的属性和方法

2.1 字符串的属性

  • length: 表示字符串的长度
js 复制代码
var str = "how are you";
console.log(str.length);
console.log(str[0]);  //获取字符串中对应下标的字符
  • ECMAScript 中的字符串是不可变的; 也就是说,字符串一旦创建,它们的值就不能改变.(恒定性)
js 复制代码
var str = "hello world";
str[0] = "b";  //不会改变
  • 如果想要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量

2.2 字符串方法

常用的20个字符串方法

js 复制代码
//1.charAt()    通过下标找字符
//2. charCodeAt()   根据下标返回字符串的unicode
//3.String.fromCharCode()   把unicode转换成字符
//4.search()    支持正则,找到了返回下标,找不到返回-1
//5.match()     支持正则,找到了返回数组,找不到返回 null
//6.indexOf()   找到了返回下表,找不到返回-1,第2个参数,默认是从0开始,也可以指定位置
//7.lastIndexOf()   从后面找
//8.slice()     截取 包含开始位置,不包含结束位置
//9.substring() 截取 2个参数,大小位置随便写(会自动调整位置),包含开始位置,不包含结束位置
//10.substr()   截取 2个参数,第一个是开始位置,第二个是截取个数
//11.concat()   合拼,拼接
//12.replace()  替换
//13.split()    切割
//14.repeat()   重复
//15.toUpperCase()  转大写
//16.toLoweCase()   转小写
//17.trim()     去掉前后的空白
//18.padStart() 前面填充
//19.padEnd()   后面填充
//20.includes() 是否包含指定的字符

通过下标找字符

  • charAt()方法,通过下标获取字符
js 复制代码
str.charAt(3);//获取下标为3的字符

通过下标获取对应字符的编码(ASCII码)

  • charCodeAt()方法,通过下标获取对应字符的编码
js 复制代码
str.charCodeAt(3);//获取下标为3的字符的编码(ASCII码)

ASCII码转换字符

  • String.fromCharCode()方法,ASCII码转换成字符
  • 该方法是String的静态方法,所以用String调用
  • 可以传递多个参数,返回字符串
js 复制代码
String.fromCharCode(94);//ASCII码转换成字符
var str = String.fromCharCode(98,99);//多个参数

查找方法(4个) search() match() indexOf() lastIndexOf()

  • search()方法用于在 String对象中执行正则表达式的搜索,寻找匹配项
  • 通过参数去寻找,找到了返回下标,找不到返回-1
js 复制代码
var str = "abc123";
console.log(str.search("c"));
console.log(str.search("b"));
console.log(str.search(/a/));
  • match()方法检索字符串与正则表达式进行匹配的结果
  • 通过参数去寻找,找到了返回数组,找不到返回-1
js 复制代码
var str = "abc123";
console.log(str.match("c"));    //返回数组
console.log(str.match("1c"));   //null
  • indexOf()方法从字符串前面去寻找,找到了返回下标,没有找到返回-1
  • 第一个参数,是寻找值
  • 第二个参数,默认是从0开始,也可以指定位置
  • 不支持正则表达式
js 复制代码
var str = "abc123";
console.log(str.indexOf("c"));
console.log(str.indexOf("b"));
console.log(str.indexOf(/a/)); //返回-1
  • lastIndexOf()方法从后面找,找到了返回下标,没有找到返回-1
  • 第一个参数,是寻找值
  • 第二个参数,默认是字符串最后位置开始,也可以指定位置
  • 不支持正则表达式
js 复制代码
var str = "abc123";
console.log(str.lastIndexOf("c"));
console.log(str.lastIndexOf("b"));
console.log(str.lastIndexOf(/a/)); //返回-1

截取方法(3个) slice() substring() substr()

  • slice()方法,两个参数,包含开始位置,不包含结束位置
js 复制代码
var str = "hello world";
console.log(str.slice(6,7));
console.log(str.slice(6));
  • substring 包含开始位置,不包含结束位置,会自动调整参数位置
js 复制代码
 var str = "hello world";
console.log(str.substring(6,7));
console.log(str.substring(7,6));
console.log(str.substring(6));
  • substr 第一个参数表示起始的位置 第二个参数不写表示为截取后面的全部
  • 第二个参数,表示截取的个数
js 复制代码
 var str = "hello world";
console.log(str.substr(6));
console.log(str.substr(6,3));

拼接方法

  • +拼接字符串
  • concat()拼接字符串
js 复制代码
var str1 = "hello";
var str2 = "world";
console.log(str1+str2); //用'+'拼接
console.log(str1.concat(str2));//concat拼接

替换方法

  • replace()两个参数,参数2替换参数1
js 复制代码
var str = "hello world";
var str1 = str.replace("hello","你好");
console.log(str);
console.log(str1);

切割方法

  • split()通过分隔符,拆分成一个数组,返回一个数组
js 复制代码
var str = "hello world";
var arr = str.split("");
console.log(str); //字符串
console.log(arr); //数组

重复方法

  • repeat()参数是重复的次数
js 复制代码
var str = "hello world";
console.log(str.repeat(10));

大小写转换(2个)

  • toUpperCase() 转大写
  • toLowerCase() 转小写
js 复制代码
var str1 = "hello world";
console.log(str1.toUpperCase()); //HELLO WORLD

var str1 = "Hello World";
console.log(str1.toLowerCase());//hello world

去掉字符串的空白

  • trim() 去掉前后的空白
js 复制代码
var str = "   hello world    ";
console.log(str.trim()); //hello world

前后填充(2个)

  • padStart() 前面填充
  • padEnd() 后面填充
  • 参数1,将字符串填充的长度,参数2,填充的字符
js 复制代码
var str = "hello";
console.log(str.padStart(10,".")); //.....hello

var str = "hello";
console.log(str.padEnd(10,".")); //hello.....

是否包含指定字符

  • includes() 是否包含指定字符,包含返回true,否则false
js 复制代码
var str = "hello world";
console.log(str.includes("hello"));//true
相关推荐
子非鱼921几秒前
【JavaScript】LeetCode:41-45
开发语言·javascript·leetcode·链表·二叉树
ROCKY_8172 分钟前
web前端-HTML常用标签-综合案例
前端·html
Q186000000008 分钟前
在HTML中添加图片
前端·html
傻虎贼头贼脑23 分钟前
day21JS-npm中的部分插件使用方法
前端·npm·node.js
小胖伦的夕阳粉33 分钟前
js 获取树节点上某节点的最底层叶子节点数据
开发语言·javascript·ecmascript
low神34 分钟前
前端在网络安全攻击问题上能做什么?
前端·安全·web安全
@听风吟1 小时前
力扣之182.查找重复的电子邮箱
大数据·javascript·数据库·sql·leetcode
qbbmnnnnnn1 小时前
【CSS Tricks】如何做一个粒子效果的logo
前端·css
唐家小妹1 小时前
【flex-grow】计算 flex弹性盒子的子元素的宽度大小
前端·javascript·css·html
涔溪1 小时前
uni-app环境搭建
前端·uni-app