【学习笔记27】JavaScript字符串方法的练习

news2025/8/2 17:10:20

JavaScript字符串方法的练习

    • 一、统计字符串中每个字符出现的次数(以对象的形式记录)
      • 1、拿到字符串所有的值
      • 2、累加统计次数
      • 3、小优化
    • 二、反转字符串
    • 三、替换违禁词
      • 1、需求:将字符串中的'6666', 替换为 "****"
      • 2、需求: 批量替换违禁词 ['6666', '777']
    • 四、查询字符串
      • 1、模拟一个查询字符串
      • 2、分析
      • 4、逻辑
        • 方法一:for循坏
        • 方法二:forEach循坏
    • 五、将对象转为查询字符串格式


笔记首发

一、统计字符串中每个字符出现的次数(以对象的形式记录)

1、拿到字符串所有的值

        var str = 'aaabbccdddeeee';// 定义变量 存储数据
        var obj = {};// 循坏遍历 拿到字符串所有的值
        for (var i = 0; i < str.length; i++) {// 当obj中为undefined时 将数值写入obj中
            if (obj[str[i]] == undefined) {
​
                obj[str[i]] = 1;
            }
            console.log(`当前 i == ${i}; str[i] == ${str[i]}`, obj);
        }
        console.log(obj);

在这里插入图片描述

2、累加统计次数

        var str = 'aaabbccdddeeee';// 定义变量 存储数据
        var obj = {};// 循坏遍历 拿到字符串所有的值
        for (var i = 0; i < str.length; i++) {// 当obj中为undefined时 将数值写入obj中
            if (obj[str[i]] == undefined) {
​
                obj[str[i]] = 1;
            }else{
                // 累加统计字数
                obj[str[i]]++;
            }
            // console.log(`当前 i == ${i}; str[i] == ${str[i]}`, obj);
        }
        console.log(obj);

在这里插入图片描述

3、小优化

                /*  解释说明
                    if(obj[a] === undefined){ true  
                        // undefined的布尔值是false    
                        // !undefined=true   !obj[str[i]]=true

                        obj[str[i]] = 1;
                    }else{  false
                        obj[str[i]]++;
                    }
                */
        var str = 'aaabbccdddeeee';// 定义变量 存储数据
        var obj = {};// 循坏遍历 拿到字符串所有的值
        for (var i = 0; i < str.length; i++) {// 当obj中为undefined时 将数值写入obj中
            // if (obj[str[i]] == undefined) {
            if (!obj[str[i]]) {
                
                obj[str[i]] = 1;
            } else {
                // 累加统计字数
                obj[str[i]]++;
            }
            // console.log(`当前 i == ${i}; str[i] == ${str[i]}`, obj);
        }
        console.log(obj);

二、反转字符串

  1. 转化为数组 字符串.split(分隔符)
  2. 反转数组
  3. 将数组的每一项合并为一个字符串
        var str = 'aabbccdd';
        console.log('原字符串:', str);// split 分割
        var str1 = str.split('');
        console.log(str1);// reverse 反转
        var str2 = str1.reverse();
        console.log(str2);var str3 = str2.join('');
        console.log('反转字符串:',str3);

在这里插入图片描述

优化代码

    var str = 'aabbccdd';
    var str1 = str.split('').reverse().join('');
    console.log(str1);

三、替换违禁词

1、需求:将字符串中的’6666’, 替换为 “****”

  • 查找字符串中是否拥用 ‘6666’ ,( includes)
  • 将其替换掉 “” (replace)
        var str = '66661234666612347771234777';
        console.log('原字符串', str);// 判断是否满足条件
        while (str.includes('6666')) {
​
            str = str.replace('6666', '****');
        }
        console.log('替换字符串', str);

在这里插入图片描述

2、需求: 批量替换违禁词 [‘6666’, ‘777’]

        var str = '66661234666612347771234777';
        console.log('原字符串', str);
    
        // 定义变量 存储要替换的违禁词
        var arr = ['6666', '777'];
        
        // for循坏遍历
            for (var i = 0; i < arr.length; i++) {
            while (str.includes(arr[i])) {
​
                str = str.replace(arr[i], '****')
            }
        }
        console.log('替换字符串', str);// forEach循坏遍历
        arr.forEach(function (item) {
            while (str.includes(item)) {
                
                str = str.replace(item, '****')
            }
        })
        console.log('替换字符串', str);

在这里插入图片描述

四、查询字符串

  1. 查询字符串 (约定)
    • 数字字符串 ‘1234567’
    • 标签字符串 ‘<div></div>’
  2. 查询字符串:‘key=value’
  3. 多个查询字符串:‘key=value;key1=value1;key2=value2’

1、模拟一个查询字符串

  • 需求:将查询字符串转换为对象格式

2、分析

  • 拿到字符串中所有的key
  • 拿到字符串中所有key对应的value

4、逻辑

  • 将字符串分隔为key=value (分隔完应该有3个)
  • 拿到每一个key添加到对象中, 并且给值赋值为对应的value

方法一:for循坏

        // 模拟一个查询字符串
        var str = 'username=QF;age=18;abc=123'
        console.log('原字符串:', str);// 定义变量 存储数
        var obj = {};var arr = str.split(';');
        console.log('分号分割字符串:', arr);// 循坏遍历
        for (var i = 0; i < arr.length; i++) {
            // 等号分割字符串
            var newArr = arr[i].split('=');
            console.log('等号分割字符串:', newArr);var key = newArr[0]
            var value = newArr[1]
            // console.log(key, value)
            obj[key] = value
        }
        console.log(obj);

在这里插入图片描述

最终代码

        // 模拟一个查询字符串
        var str = 'username=QF; age=18;abc=123';
        console.log(str);

        // 定义变量 存储数据
        var obj = {};

        // 分号分割字符串
        var arr = str.split(';');

        // 循坏遍历 
        for (var i = 0; i < arr.length; i++) {
            // 等号分割字符串
            var newArr = arr[i].split('=');

            var key = newArr[0];
            var value = newArr[1];
            obj[key] = value;
        }
        console.log(obj);

在这里插入图片描述

方法二:forEach循坏

        // 模拟一个查询字符串
        var str = 'username=QF;age=18;abc=123'
        console.log('原字符串:', str);// 定义变量 存储数
        var obj = {};var arr = str.split(';');
        console.log(arr);
​
        arr.forEach(function (item) {
            //等号分割字符串
            var newArr = item.split('=')
            // var key = newArr[0]
            // var value = newArr[1]
            // obj[key] = value
            
            obj[newArr[0]] = newArr[1]
        })
​
        console.log(obj)

在这里插入图片描述

五、将对象转为查询字符串格式

        var obj = {
            username: 'QF',
            age: 18,
            abc: 124
        };
        console.log('原对象:', obj);var newStr = '';
        for (var key in obj) {
            // 累加键值对
            newStr += 'key' + '=' + obj[key] + ';';
            console.log(newStr);
        }
        // 字符串.slice(开始下标, 结束下标)
        newStr = newStr.slice(0, newStr.length - 1);
        console.log('查询字符串:', newStr);

在这里插入图片描述

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

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

相关文章

安全自动化企业网络架构 (毕设分享)

一、前言&#xff1a; 前段时间完成了自己的毕设项目——安全自动化企业网络架构。总的来说&#xff0c;该项目是一个对自己的挑战&#xff0c;其中涉及到Kubernetes容器云的搭建以及安全加固&#xff0c;DevOps CI/CD部署容器化监控平台&#xff0c;Django自动化运维平台开发…

CSS3------盒模型

盒模型 每个标签在浏览器上都被渲染成一个矩形个盒子&#xff0c;这个盒子有一个标准都组成结构&#xff0c;我们称为标准盒模型 盒模型构成 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta name&qu…

【MM小贴士】物料主数据的中止与后继(2)

【日常吐槽】项目要上线了&#xff0c;70w的物料主数据导完了&#xff0c;有一部分小伙伴被隔离了&#xff0c;没人陪我玩&#xff0c;所以再补充几点日常blog。 很久以前发票了一篇博客&#xff0c;是关于物料主数据的中止与后继&#xff0c; 前期的blog可以参考【MM小贴士】…

Euler diagram

An Euler diagram (/ˈɔɪlər/, OY-lər) is a diagrammatic means of representing sets and their relationships. They are particularly useful for explaining complex hierarchies and overlapping definitions. They are similar to another set diagramming techniqu…

使用css形变实现一个立方体

关于 Nuxt.js 2016 年 10 月 25 日&#xff0c;zeit.co 背后的团队对外发布了 Next.js &#xff0c;一个 React 的服务端渲染应用框架。几小时后&#xff0c;与 Next.js 异曲同工&#xff0c;一个基于 Vue.js 的服务端渲染应用框架应运而生&#xff0c;我们称之为&#xff1a;…

速卖通跨境智星,速卖通合理补单技法

1、测评的用途   提升店铺信誉等级和好评&#xff0c;最重要的是提升产品权重和搜索排名&#xff0c;因为如果产品没有曝光&#xff0c;就没有流量&#xff0c;当然当有了权重和搜索排名&#xff0c;好评也是必不可少的。 2、爆款打造   很多新人在测评的时候会关注店铺排名…

Git版本控制工具使用

文章目录1. CICD系统构成和流程1.1 CICD来源及概念1.2 Git版本控制系统2. Git操作和使用git config (基本配置操作)git clone <repo URL\> (创建仓库|拷贝已有仓库)git branch (分支相关操作- 创建|查看|删除)git checkout (操作文件和分支)git add/commit (提交和修改-保…

Unity导入URDF模型(turtlebot3 waffle pi为例)

本篇文章介绍Unity下如何导入机器人的URDF模型&#xff0c;主要参考官方教程&#xff1a;https://github.com/Unity-Technologies/Unity-Robotics-Hub/blob/main/tutorials/urdf_importer/urdf_tutorial.md   关于导入的机器人模型选择了turtlebot3 waffle pi作为示例 1.Uni…

Sa-Token

介绍 类似于Security的认证授权的解决方案&#xff0c;但是使用起来非常方便&#xff0c;1.支持登录认证&#xff0c;授权权限验证&#xff0c;踢人&#xff1b;2.支持自定义Token&#xff0c;并且能够结合Redis完成前后端分离认证方案&#xff1b;3.支持单点登录&#xff08;…

柯桥成人英语培训机构哪家好,新陈代谢到底是什么?

新陈代谢到底是什么? Metabolism is a combination of biochemical processes that your body uses to convert food into energy. These metabolic processes include breathing, eating and digesting food, the delivery of nutrients to your cells through the blood, th…

【Linux】(四)VS Code远程开发方式-实验室服务器使用VS Code远程开发

VS code 方式系列文章一、服务器情况简介1.1服务器及用户1.2 cuda1.3 conda环境二、VS code连接使用说明2.1 下载VS code2.2 配置2.3 调试文件附录&#xff1a;VS code调试复杂配置公共数据集系列文章 &#xff08;一&#xff09;服务器初次配置及安装vncserver &#xff08;二…

磨金石教育摄影技能干货分享|古风人像拍摄要注意哪些问题

古风人像与普通人像的拍摄略有不同&#xff0c;有三个要素需要做好准备。服装、妆容、道具。 服装有不少考究&#xff0c;不同的服装有不同的风格&#xff0c;侠士、温婉、清新、可爱等等&#xff0c;今天我们要拍摄的主题风格是侠女。所以选择的是魏晋风汉服。 妆 容 妆容也是…

【无人机】基于PID控制器和A星算法实现无人机路径规划附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

生鲜电商十年:如何撞破盈利难墙?谁在竞速突围?

生鲜电商已十年。 这十年间&#xff0c;无数资本和公司前赴后继&#xff0c;试图探索出一条持续盈利路径&#xff0c;并完成商业模式的持续迭代&#xff0c;然而成功者寥寥。 这么大规模、长时间的摸索&#xff0c;在整个互联网行业都较为少见。一是因为它足够难&#xff0c;…

神经网络和深度学习-反向传播back propagation代码

反向传播back propagation代码 再简单模型中&#xff0c;按照下图的神经网络来完成模型的训练 在复杂的模型当中&#xff0c;输入&#xff0c;权重&#xff0c;隐藏层的数量都是很多的&#xff0c;例如下图中&#xff0c;输入x有5个神经元&#xff0c;第一层隐藏层h中有6个神经…

Rust China Hackathon 2022 达坦科技组空中宣讲会来啦!

Rust China Hackathon 2022 即将来袭&#xff01; 本届Hackathon的主题为「Rust For Fun」&#xff0c;分为「社区组」与「企业组」。 达坦科技作为本届Hackathon的协办方&#xff0c;赞助参与本次企业组赛道&#xff0c;将基于Xline这个开源项目&#xff0c;就Concurrent Inde…

【linux】物理磁盘挂载目录——(分区、格式化、重启自动挂载)

大家好&#xff0c;我是好学的小师弟&#xff01; 现有一全新的物理磁盘需要挂载到某个目录下&#xff0c;操作步骤如下。 目录 一、磁盘分区 二、磁盘格式化 三、磁盘挂载 四、重启自动挂载 注意点: 1.该目录要存在&#xff0c;不存在的话需手动mkdir创建 2.该目录需要为…

IMS各网元的主要功能

文章目录用户注册时&#xff1a; 手机发出一个注册消息到他所在的拜访地的P。 比如&#xff0c;他是山西太原的用户&#xff0c;他这时候到了北京&#xff0c;那么这个时候&#xff0c;他要注册到IMS网络里面的话&#xff0c;这个P-CSCF就是北京的P-CSCF&#xff0c;这个北京的…

[附源码]java毕业设计游戏账号交易平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【零基础入门MyBatis系列】第十一篇——动态SQL

一、概述 &#x1f4d6; 1、什么是动态SQL&#xff1f; 根据不同条件生成不同的SQL语句&#xff0c;是mybatis的一大优势。用于动态拼接SQL语句 &#x1f4d6; 2、如何实现动态SQL&#xff1f; mybatis 为我们提供了一些标签&#xff0c;在写SQL语句的时候&#xff0c;合理…