【JavaScript 漫游】【012】ES5 规范中 String 对象方法汇总

油画_抽象
文章简介

本文为【JavaScript 漫游】专栏的第 012 篇文章,记录的内容包含了 ES5 规范中String 对象的所有方法。

笔者认为要掌握的方法包括:

  • String.prototype.concat()
  • String.prototype.slice()
  • String.prototype.substring()
  • String.prototype.substr()
  • String.prototype.indexOf()String.prototype.lastIndexOf()
  • String.prototype.trim()
  • String.prototype.toLowerCase()String.prototype.toUpperCase()
  • String.prototype.match()String.prototype.search()String.prototype.replace()
  • String.prototype.split()

仅需了解的方法包括:

  • String.fromCharCode()
  • String.prototype.charAt()
  • String.prototype.charCodeAt()
  • String.prototype.localeCompare()

String.prototype.concat()

concat 方法用于连接两个字符串,返回一个新字符串,不改变原字符串。

var s1 = 'abc';
var s2 = 'def';
s1.concat(s2) // "abcdef"
s1 // "abc"

该方法可以接受多个参数。

'a'.concat('b', 'c') // "abc"

如果参数不是字符串,concat 方法会将其先转为字符串,然后再连接。

String.prototype.slice()

slice 方法用于从原字符串取出子字符串并返回,不改变原字符串。用法与 Array 对象基本相同。

'JavaScript'.slice(0, 4) // "Java"

String.prototype.substring()

substring 方法用于从原字符串取出子字符串并返回,不改变原字符串,跟 slice 方法很相像。

'JavaScript'.substring(0, 4) // "Java"

substring 方法有些规则与 slice 方法不同。

如果第一个参数大于第二个参数,substring 方法会自动更换两个参数的位置。

'JavaScript'.substring(10, 4) // "Script"
// 等同于
'JavaScript'.substring(4, 10) // "Script"

如果参数是负数,substring 方法会自动将负数转为 0 。

'JavaScript'.substring(-3) // "JavaScript"
'JavaScript'.substring(4, -3) // "Java"

由于这些规则违反直觉,因此不建议使用 substring 方法,应该优先使用 slice

String.prototype.substr()

substr 方法用于从原字符串取出子字符串并返回,不改变原字符串,跟 slicesubstring 方法的作用相同。

substr 方法的第一个参数是子字符串的开始位置(从 0 开始计算),第二个参数是子字符串的长度。更具体的用法跟 Array 对象的 splice 实例方法相同。

'JavaScript'.substr(4, 6) // "Script"

String.prototype.indexOf()String.prototype.lastIndexOf()

indexOf 方法用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回 -1,就表示不匹配。

'hello world'.indexOf('o') // 4
'JavaScript'.indexOf('script') // -1

indexOflastIndexOf 方法的具体用法与Array 对象中的相同,这里不再赘述。

String.prototype.trim()

trim 方法用于去除字符串两端的空格,返回一个新字符串,不改变原字符串。

'  hello world  '.trim()
// "hello world"

该方法去除的不仅是空格,还包括制表符(\t\v)、换行符(\n)和回车符(\r)。

'\r\nabc \t'.trim() // 'abc'

String.prototype.toLowerCase()String.prototype.toUpperCase()

toLowerCase 方法用于将一个字符串全部转为小写,toUpperCase 则是全部转为大写。它们都返回一个新字符串,不改变原字符串。

'Hello World'.toLowerCase()
// "hello world"
'Hello World'.toUpperCase()
// "HELLO WORLD"

String.prototype.match()String.prototype.search()String.prototype.replace()

match 方法用于确定原字符串是否匹配某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回 null

'cat, bat, sat, fat'.match('at') // ["at"]
'cat, bat, sat, fat'.match('xt') // null

返回的数组还有 index 属性和 input 属性,分别表示匹配字符串开始的位置和原始字符串。

var matches = 'cat, bat, sat, fat'.match('at');
matches.index // 1
matches.input // "cat, bat, sat, fat"

search 方法的用法基本等同于 match,但是返回值为匹配的第一个位置。如果没有找到位置,则返回 -1

'cat, bat, sat, fat'.search('at') // 1

replace 方法用于替换匹配的子字符串,一般情况下只替换第一个匹配。

'aaa'.replace('a', 'b') // "baa"

String.prototype.split()

split 方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组。

'a|b|c'.split('|') // ["a", "b", "c"]

如果分割规则为空字符串,则返回数组的成员是原字符串的每一个字符。

'a|b|c'.split('') // ["a", "|", "b", "|", "c"]

如果省略参数,则返回数组的唯一成员就是原字符串。

'a|b|c'.split() // ["a|b|c"]

如果满足分割规则的两个部分紧邻着(即两个分割符中间没有其他字符),则返回数组之中会有一个空字符串。

'a||c'.split('|') // ['a', '', 'c']

如果满足分割规则的部分处于字符串的开头或结尾(即它的前面或后面没有其他字符),则返回数组的第一个或最后一个成员是一个空字符串。

'|b|c'.split('|') // ["", "b", "c"]
'a|b|'.split('|') // ["a", "b", ""]

split 方法还可以接受第二个参数,限定返回数组的最大成员数。

'a|b|c'.split('|', 0) // []
'a|b|c'.split('|', 1) // ["a"]
'a|b|c'.split('|', 2) // ["a", "b"]
'a|b|c'.split('|', 3) // ["a", "b", "c"]
'a|b|c'.split('|', 4) // ["a", "b", "c"]

String.fromCharCode()

参数是一个或多个参数,代表 Unicode 码点,返回值是这些码点组成的字符串。

String.fromCharCode() // ""
String.fromCharCode(97) // "a"
String.fromCharCode(104, 101, 108, 108, 111)
// "hello"

String.prototype.charAt()

charAt 方法返回指定位置的字符,参数是从 0 开始编号的位置。

var s = new String('abc');
s.charAt(1) // "b"
s.charAt(s.length - 1) // "c"

String.prototype.charCodeAt()

返回字符串指定位置的 Unicode 码点(十进制表示),相当于 String.fromCharCode 的逆操作。

'abc'.charCodeAt(1) // 98

String.prototype.localeCompare()

localeCompare 方法用于比较两个字符串。它返回一个整数,如果小于 0,表示第一个字符串小于第二个字符串;如果等于 0,表示两者相等;如果大于 0,表示第一个字符串大于第二个字符串。

'apple'.localeCompare('banana') // -1
'apple'.localeCompare('apple') // 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/676241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MacOS上怎么把格式化成APFS的U盘或者硬盘格式化回ExFAT?

一、问题 MacOS在更新MacOS Monterey后或者更高系统后发现,格式U盘或者硬盘只有4个APFS选项,那么我们该如何将APFS格式成ExFAT? 二、解答 将APFS的U盘或者硬盘拓展成MacOS的拓展格式即可,操作步骤如下 1、电脑接入U盘或者硬盘 2…

vue3 之 商城项目—二级分类

二级分类功能描述 配置二级路由 准备组件模版 <script setup></script><template><div class"container "><!-- 面包屑 --><div class"bread-container"><el-breadcrumb separator">"><el-bre…

GPT如何在一分钟内完成论文数据分析?

数据上传 PPMAN-AI 01 由于技术限制&#xff0c;目前InfinitePaper AI仅支持上传1份文件&#xff0c;且大小不超过10M。但是&#xff0c;在强大的代码解释器面前&#xff0c;这都是小问题。我们只需要将可能用到的文件打包成压缩文件上传即可&#xff0c;之后要求GPT直接解压…

Spring基础 - Spring核心之控制反转(IOC)

Spring基础 - Spring核心之控制反转(IOC) 引入 Spring框架管理这些Bean的创建工作&#xff0c;用户管理Bean转变为框架管理Bean&#xff0c;这个称之为控制翻转Spring框架托管创建的Bean放在IOC容器中Spring框架为了更好让用户配置Bean&#xff0c;必然会引入不同方式来配置B…

网络协议、网络传输认识

目录 网络协议概念 网络协议具象化理解 协议分层 TCP/IP模型 网络传输基本流程 网络协议概念 网络协议是计算机网络中用于在通信设备之间传输数据的规则集合。这些规则定义了数据的格式、传输方式、错误检测和纠正方法等&#xff0c;以确保不同设备之间的通信能够正确进行…

Amazon Dynamo学习总结

目录 一、Amazon Dynamo的问世 二、Amazon Dynamo主要技术概要 三、数据划分算法 四、数据复制 五、版本控制 六、故障处理 七、成员和故障检测 一、Amazon Dynamo的问世 Amazon Dynamo是由亚马逊在2007年开发的一种高度可扩展和分布式的键值存储系统&#xff0c;旨在解…

百度Apollo荣获量子位-智能车参考“2023智能车年度评选”两大奖项

2023&#xff0c;是谁在引领智能车浪潮&#xff1f; 量子位-智能车参考发布“2023智能车年度评选”结果。经过业内专业评审和垂直社群万人票选后&#xff0c;百度Apollo荣获「年度十大智能车技术产品/方案」「年度十大智能车领军人物」两项大奖。 年度十大智能车技术产品\方…

jvm问题自查思路

本文聊一下最近处理了一些jvm的问题上&#xff0c;将这个排查和学习过程分享一下&#xff0c;看了很多资料&#xff0c;最终都会落地到几个工具的使用&#xff0c;本文主要是从文档学习、工具学习和第三方技术验证来打开认知和实践&#xff0c;希望有用。 一、文档 不仅知道了…

springboot+vue居民小区设备报修系统

小区报修系统可以提高设施维护的效率&#xff0c;减少机构的人力物力成本&#xff0c;并使得维修人员可以更好地了解维护设备的情况&#xff0c;及时解决问题。 对于用户来说&#xff0c;报修系统也方便用户的维修请求和沟通&#xff0c;提高了用户的满意度和信任。其次小区报修…

imazing是啥?imazing有什么用

iMazing 是一款用于管理 iOS 设备的第三方软件。它支持在 Windows 或 Mac 电脑上对连接的 iPhone、iPad 或 iPod 进行数据传输、备份和管理工作。用户可以通过 iMazing 传输和备份包括照片、音乐、铃声、视频、电子书和通讯录等在内的多种信息。iMazing 的功能与苹果官方的 iTu…

函数及函数的定义

前言&#xff1a; 在之前介绍指针的时候&#xff0c;小编发现有些地方需要用函数&#xff0c;所以小编决定先带领大家学习函数&#xff0c;然后再学习指针。 函数是从英文function翻译过来的&#xff0c;其实function在英文中的意思就是函数&#xff0c;也是功能的意思&#xf…

UE4运用C++和框架开发坦克大战教程笔记(十九)(第58~60集)完结

UE4运用C和框架开发坦克大战教程笔记&#xff08;十九&#xff09;&#xff08;第58~60集&#xff09;完结 58. 弹窗显示与隐藏59. UI 面板销毁60. 框架完成与总结 58. 弹窗显示与隐藏 这节课我们先来补全 TransferMask() 里对于 Overlay 布局类型面板的遮罩转移逻辑&#xff…

C++,stl,栈stack和队列queue详解

1.栈stack 1.stack基本概念 2.stack常用接口 代码示例&#xff1a; #include<bits/stdc.h> using namespace std;int main() {stack<int> stk;stk.push(7);stk.push(9);stk.push(5);cout << "栈的size为&#xff1a;" << stk.size() <…

【STL】list模拟实现

vector模拟实现 一、接口大框架函数声明速览二、结点类的模拟实现1、构造函数 三、迭代器类的模拟实现1、迭代器类存在的意义2、迭代器类的模板参数说明3、构造函数4、运算符的重载&#xff08;前置和后置&#xff09;&#xff08;1&#xff09;前置&#xff08;2&#xff09;后…

【Web】vulhub Shiro-550反序列化漏洞复现学习笔记

目录 Shiro简介 复现流程 工具一把梭 半脚本半手动 原理分析 反序列化入口 常见的key 登录过程 验证过程 利用原理 Shiro简介 Apache Shiro 是一个强大且易于使用的 Java 安全框架&#xff0c;用于身份验证、授权、加密和会话管理等安全功能。Shiro 的设计目标是简单…

【Spring】springmvc如何处理接受http请求

目录 ​编辑 1. 背景 2. web项目和非web项目 3. 环境准备 4. 分析链路 5. 总结 1. 背景 今天开了一篇文章“SpringMVC是如何将不同的Request路由到不同Controller中的&#xff1f;”&#xff1b;看完之后突然想到&#xff0c;在请求走到mvc 之前服务是怎么知道有请求进来…

大模型是如何实现Function Call函数调用的?

▼最近直播超级多&#xff0c;预约保你有收获 近期直播&#xff1a;《Agent 企业级应用案例实战》 —1— 大模型如何实现函数调用&#xff1f; 大模型要实现精确的函数调用&#xff08;Function Call&#xff09;需要理解能力和逻辑能力&#xff0c;理解能力就是对用户的 Prom…

redhat grub.cfg配置文件丢失或报错解决

1.实验环境&#xff1a;把grub.cfg删除 [rootexample ~]# rm -rf /boot/grub2/grub.cfg 2.重启服务器 3&#xff0c;发现进入系统失败 输入以下命令 ls: 列出当前设备上的文件和目录。 grub> ls (hd0) (hd0,msdos3) (hd0,msd0s2) (hd0,msdos1) #一般第一个为/boot分区se…

技术精英求职必备:Java开发工程师简历制作全指南

投简历找工作嘛&#xff0c;这事儿其实就跟相亲差不多&#xff0c;得让对方一眼就看上你。 在这场职场的‘相亲’中&#xff0c;怎样才能让你的简历脱颖而出&#xff0c;成为HR眼中的理想‘对象’呢&#xff1f;来&#xff0c;我给你支几招&#xff0c;让你的简历更吸引人。 …

HiveSQL——用户中两人一定认识的组合数

注&#xff1a;参考文章&#xff1a; SQL之用户中两人一定认识的组合数--HQL面试题36【快手数仓面试题】_sql面试题-快手-CSDN博客文章浏览阅读1.2k次&#xff0c;点赞3次&#xff0c;收藏12次。目录0 需求分析1 数据准备2 数据分析3 小结0 需求分析设表名&#xff1a;table0现…