JavaScript 字符串魔法:实用技巧——WEB开发系列45

news2024/10/23 15:30:10

这篇文章,探讨一下 JavaScript 中的字符串操作。字符串是编程中的基本数据类型之一,它们无处不在,几乎在所有的代码中都需要处理。了解字符串的基础知识、常用的内置方法,通过实例来学习高效地操作字符串。


一、什么是字符串?

字符串(​​string​​)是一种用于表示文本的数据类型。它是由一系列字符组成的,可以包含字母、数字、符号等内容。我们通常使用单引号(​​''​​)、双引号(​​""​​)或反引号(​​`​​​)来表示字符串。

let greeting = 'Hello, World!';
let message = "JavaScript is awesome!";
let multiline = `This is
a multi-line
string.`;

二、把字符串当作对象

字符串既是基础类型(primitive type),又可以像对象一样使用。为什么呢?这是因为当调用字符串方法时,JavaScript 会将字符串自动转换为一个​​String​​​对象,从而允许使用字符串对象的内置方法。以下是常用的几种操作:

1. 获取字符串的长度

要获取字符串的长度,我们可以使用 ​​.length​​​ 属性。

let text = "JavaScript";
console.log(text.length); // 输出: 10

​length​​​ 属性返回字符串中的字符数,包括空格和标点符号。

2. 检索特定字符串字符

通过索引号来访问字符串中的特定字符。字符串的索引从 0 开始。

let char = text[0]; // 获取第一个字符 'J'
console.log(char); // 输出: J

我们也可以使用 ​​.charAt()​​​ 方法来获取指定位置的字符。

let char2 = text.charAt(4); // 获取第5个字符 'S'
console.log(char2); // 输出: S

3. 在字符串中查找子字符串并提取

JavaScript 提供了多种方法来查找和提取子字符串。

  • ​indexOf()​​: 返回子字符串首次出现的索引。如果未找到,返回 ​​-1​​。
let str = "Hello, World!";
let index = str.indexOf("World"); // 查找 'World'
console.log(index); // 输出: 7
  • ​substring()​​​: 提取字符串的子字符串,基于起始和结束索引。
let subStr = str.substring(0, 5); // 提取 'Hello'
console.log(subStr); // 输出: Hello

4. 转换大小写

你可以轻松地将字符串中的字符转换为大写或小写。

  • ​toUpperCase()​​: 转换为大写。
let upperCaseStr = str.toUpperCase();
console.log(upperCaseStr); // 输出: HELLO, WORLD!
  • ​toLowerCase()​​​: 转换为小写。
let lowerCaseStr = str.toLowerCase();
console.log(lowerCaseStr); // 输出: hello, world!

5. 替换字符串的某部分

​replace()​​ 方法允许我们替换字符串中的某个子字符串。

let newStr = str.replace("World", "JavaScript");
console.log(newStr); // 输出: Hello, JavaScript!

值得注意的是,​​replace()​​​ 只会替换第一个匹配的字符串。如果需要替换所有匹配的字符串,我们可以使用正则表达式的全局模式。

let sentence = "Cats are great, cats are cute!";
let newSentence = sentence.replace(/cats/gi, "dogs"); // 替换所有匹配
console.log(newSentence); // 输出: Dogs are great, dogs are cute!

三、处理字符串的实际操作

让我们通过一些实例来更加深入地了解字符串的操作方式。


示例 1: 过滤问候消息

在这个练习中,我们有一个字符串数组,包含一些节日问候的消息。我们的任务是找出其中包含 "春节" 的消息。

let greetings = [
  "元旦快乐!",
  "春节快乐!",
  "元宵节节快乐!",
  "端午节快乐!"
];

for (let greeting of greetings) {
  if (greeting.includes("春节")) {
    console.log(greeting); // 输出: 春节快乐!
  }
}

代码中使用了 ​​includes()​​​ 方法来检查每条消息是否包含 "春节"。


示例 2: 大写修正

现在我们有一个英国城市名称的数组,但这些名字的大小写搞乱了。我们需要把它们修正成首字母大写,其余部分小写的形式。

let cities = ["london", "bIrMInGham", "MANCHESTER"];

for (let city of cities) {
  let lowerCity = city.toLowerCase(); // 全部转为小写
  let fixedCity = lowerCity.charAt(0).toUpperCase() + lowerCity.slice(1);
  console.log(fixedCity); // 输出: London, Birmingham, Manchester
}

代码中首先使用 ​​toLowerCase()​​ 方法将城市名全部转为小写,然后使用 ​​charAt(0)​​​ 获取第一个字符,并将其转换为大写。最后,将处理好的首字母与剩下的字符串拼接起来。


示例 3: 提取火车站信息

我们有一个包含青岛火车站信息的数组,数据格式为站代码 + 数据项 + 可读站名。要提取站点代码和站名。

let stationInfo = [
  "QCH12345;青岛站",
  "JN12345;济南站",
  "BJ12345;北京站"
];

for (let info of stationInfo) {
  let stationCode = info.slice(0, 3); // 提取站代码
  let stationName = info.slice(info.indexOf(";") + 1); // 提取站名
  let result = stationCode + " - " + stationName;
  console.log(result); // 输出: QCH - 青岛站, JN - 济南站, BJ - 北京站
}

使用了 ​​slice()​​ 和 ​​indexOf()​​​ 方法分别提取站点代码和站名。


四、主动学习

为了进一步增强大家对字符串操作的理解,可以尝试以下练习:

  1. 给定一个字符串数组,过滤掉其中所有包含敏感词的字符串。
  2. 将用户输入的电子邮件地址转换为小写,并去掉前后空格。
  3. 创建一个字符串模板,接收用户的名字,并生成一条个性化的欢迎消息。

示例代码:

// 过滤敏感词
let comments = ["我讨厌这个产品", "这个产品真棒", "不要买这个"];
let filteredComments = comments.filter(comment => !comment.includes("讨厌"));
console.log(filteredComments); // 输出: ["这个产品真棒", "不要买这个"]

// 格式化电子邮件
let email = "   USER@EXAMPLE.com ";
let formattedEmail = email.trim().toLowerCase();
console.log(formattedEmail); // 输出: user@example.com

// 个性化欢迎消息
let userName = "Alice";
let welcomeMessage = `Hello, ${userName}! Welcome to our website.`;
console.log(welcomeMessage); // 输出: Hello, Alice! Welcome to our website.

如有表述错误及欠缺之处敬请各位佬批评补充。

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

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

相关文章

史上最好用的html类word编辑器

前言 近期在做一个项目,需要用到大量的word模板生成对应资料还要打印,之前想的是用一款富文本编辑器即可使用,无赖客户比较刁钻要求系统中看到的所有页面尽量和word上效果一样,并且打印出来每一页内容和系统显示的要一致&#xf…

如何根据店铺商品选择合适的礼品代发平台?

随着电商行业的蓬勃发展,礼品代发服务已经成为很多店铺提升客户体验、增加订单量的重要策略。尤其是对于那些想要通过赠送小礼品、促销品或节日礼物来吸引顾客的商家来说,选择一个合适的礼品代发平台至关重要。如何根据店铺的商品特点选择一个最适合自己…

人员跌倒检测系统的设计与实现(Yolov Python38 深度学习)+文档

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

数据结构与算法——Java实现 35.求数据流中的第K大元素

目录 703. 数据流中的第 K 大元素 思路 题目解析: 数据流: 数据流和数组的区别: 代码实现 小顶堆类 测试类 力扣 我想成为一个强大、坦荡又热血的人,我爱霓虹闪烁,也爱高山流水,更爱我自己 —— 24.10.13 7…

视频的编解码格式

文章目录 视频的编解码格式概念术语视频处理流程视频封装格式视频编码格式视频编解码器,视频容器和视频文件格式之间的区别补充视频码率 参考资料 视频的编解码格式 概念术语 两大组织主导视频压缩的组织及其联合(joint)组织 ITU-T(VCEG) ITU-T的中文名称是国际电信…

【wpf】05 几种容器动态创建控件的对比

今天利用一点时间,对wpf中在常用容器中动态创建控件的方法进行了学习和测试,本篇文章用来记录这个过程及一些心得。 1 容器说明 用于对比的wpf常用容器类包括如下七种: StackPanelGridScrollViewerWrapPanelCanvasUniformGridDockPanel 以…

Vue实现动态表单

使用 Vue 实现动态表单 在前端开发中,我们经常遇到根据用户输入动态生成不同表单项的需求。这类动态表单不仅提升了用户体验,还可以让复杂的交互流程变得简洁而高效。本文将详细讲解如何使用 Vue 3 的响应式特性,逐步构建一个递归动态表单。…

服务器虚拟化的好处有哪些

1.什么是服务器虚拟化? 在计算服务中,有7种虚拟化包括硬件虚拟化(即服务器虚拟化)、软件虚拟化、内存虚拟化、存储虚拟化、数据虚拟化、网络虚拟化和桌面虚拟化。 其中,服务器虚拟化的初衷是让Windows和Linux操作系统…

【环境搭建】更换电脑后的开发环境怎么重建

目录 🍸前言 🍻一、系统配置检查 🍺二、开发环境搭建 🍹三、章末 🍸前言 小伙伴们大家好,这次文章跟技术没有关联,因为最近刚更换了装备,开发环境啥的残缺不全,也不能…

多倍体重测序-经典分析思路

你知道吗?甘蔗不仅是全球糖分的主要来源,而且它还隐藏着许多未被发掘的秘密。今天,我们就来聊聊科学家们是如何通过全基因组测序技术解开甘蔗品种改良之谜的! 广东省科学院南繁种业研究所在《The Plant Journal》杂志上发表题为“…

vue3项目在vue平台下添加nvue文件会报[plugin:vite:nvue-css]

项目运行是会报大量的[plugin:vite:nvue-css]作警告 解决办法:在app.vue引入公共css文件外添加#ifndef APP-PLUS-NVUE条件 // #ifndef APP-PLUS-NVUE import "uview-plus/index.scss"; /*每个页面公共css */ import "colorui/main.css"; //#en…

微信小程序考试系统(lw+演示+源码+运行)

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序考试系统的开发全过程。通过分析微信小程序考试系统管理的不足,创建了一个计算机管理微信小程序考试系统的方案。文章介绍了微信小程序考…

Leetcode 1168. 水资源分配优化

1.题目基本信息 1.1.题目描述 村里面一共有 n 栋房子。我们希望通过建造水井和铺设管道来为所有房子供水。 对于每个房子 i,我们有两种可选的供水方案:一种是直接在房子内建造水井,成本为 wells[i – 1] (注意 -1 ,…

双十一买什么东西比较好?2024双11好物攻略诚意分享

双十一活动已经准备要开始了,很多人摩拳擦掌准备入手划算好物,但是有的人也比较迷茫,双十一买什么东西比较好?为了帮助大家在这场购物狂欢中理性消费,提升购物体验,我们精心整理了一份2024双11好物攻略诚意…

扭亏年只是开始,赛力斯的成长性仍在继续

赛力斯的三季度业绩报告发出之后,不少股民在评论区如释重负: 大雪压我两三年,我笑大雪轻如棉。 业绩预告显示,赛力斯2024年前三季度营业收入同比大增518%到559%,达1030.0亿元到1100.0亿元;同时净利润连续…

2018年计算机网络408真题解析

第一题: 解析:TCP/IP体系结构应用层常用协议及其相应的运输层协议 TCP协议是面向连接可靠数据传输服务,UDP无连接不可靠的数据传输服务,IP无连接不可靠的数据连接服务。 FTP协议,SMTP协议和HTTP协议使用TCP协议提供的面…

防爆手机能有多轻薄?AORO A29小身躯在石油化工有大作为!

防爆手机能有多轻薄?AORO A29防爆手机机身尺寸为177.4*81.5*12.75mm,重量仅为334.5g,其轻薄的设计在一众“砖头”工业防爆手机中脱颖而出。 轻薄是不是意味着功能削减?AORO A29防爆手机在保持轻薄体态的同时,集成了九…

数据结构(七大排序)

前言 前话:排序在我们日常中很常见,但在不同的场合我们需要选择不同的排序,因为每个排序都有不同的使用场景,不同的时间复杂度和空间复杂度;常见的排序分为七种, 插入排序、选择排序、交换排序和归并排序&…

2024 年 Mac 下这些生产力工具,好用到哭

每段关系最终都会结束 即使不是因为别的原因 也会因为死亡 我只知道 你不对她说出来 她就永远不知道 你的心意 她那天离开的时候 才知道一个道理 有时候 保护一样重要的东西的方式 不是守在她旁边 而是离开她 离得远远的远到看起来谁也 不在乎谁一样 今天呢&#x…

FPGA上板调试方式总结----VIO/ILA

在Vivado中,VIO(Virtual Input/Output)是一种用于调试和测试FPGA设计的IP核,它允许设计者通过JTAG接口实时读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供了一个简单易用的接口&#x…