递归手撕,JSON 字符串化和解析,加权树结构的字符串解析对象,解析并返回DOM 树结构(DOMParser),解析带有层级的文本

目录

1 JSON 字符串化和解析

2 加权树结构的字符串解析对象

3. 解析并返回DOM 树结构

4. 解析带有层级的文本


1 JSON 字符串化和解析

//  <!-- 实现一个函数,能够将自定义格式的字符串转换为 JSON 对象。
//      例如,给定字符串 'name: "Alice", age: 30',输出 { name: "Alice", age: 30 }。 -->
function digui(str){//首先 截取,的前后 然后截取:的前后let obj={}//str1='' x.slice()let arr=str.split(',')//['name:'alice],['age':'30']//考虑到alice外的引号和:后的空白没arr.map((item,index)=>{let [apple,pine]=item.split(': ').map((i)=>i.trim())pine=JSON.parse(pine)obj[apple]=pine})return obj}
let str='name: "Alice", age: 30'
console.log(digui(str))

2 加权树结构的字符串解析对象

给定一个加权树结构的字符串,例如 '(A:3,(B:2,C:1))',解析为一个对象 { A: 3, B: 2, C: 1 }。

//遇到左括号 递归 处理去掉逗号后 去掉冒号 第function digui(str){
//干脆去除所有括号 
let str2=''
for(let i=0;i<str.length;i++){if(str[i]!='(' && str[i]!=')')str2+=str[i]}
let obj={}
let lines=str2.split(',').map(item => item.trim())
//[a:3],[b,3]
lines.forEach((item)=>{let [apple,pine]=item.split(':').map(item => item.trim())obj[apple]=pine})
return obj}let str='(A:3,(B:2,C:1))'console.log(digui(str))

3. 解析并返回DOM 树结构

实现一个函数,能够解析简单的 HTML 字符串并返回 DOM 树结构。

// 例如,给定字符串 "<div><span>Hello</span><p>World</p></div>"

function apple(str){
let parser = new DOMParser()
let tryparser = parser.parseFromString(str,'text/html').body.firstChild
return tryparser}let str= "<div><span>Hello</span><p>World</p></div>";console.log(apple(str)); 

解析后返回的文档中包含一个完整的 HTML 文档结构(包含 <html><head> 和 <body> 标签),.body 选择其中的 <body> 元素。firstChild 选择 <body> 中的第一个子节点div。

text/html' 告诉浏览器和 JavaScript 解释器要将字符串按照 HTML 格式解析。

4. 解析带有层级的文本

编写一个函数将其解析为树形结构。

function treee(str){let root={value:'root',children:[]}let st=[root]let lines=str.split('\n')lines.forEach(line=>{
let level=line.search(/\S/)
let node={value:line.trim(),children:[]}
while(st.length>level+1){st.pop()
}
st[st.length-1].children.push(node)
st.push(node)})return root }const text = 'A\n  B\n    C\n  D';console.log(JSON.stringify(treee(text), null, 2));

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

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

相关文章

9.20日学习记录及相关问题解答

部分一 今天看了一本古老的书。学到了一些有关计算机的远古的知识。弥补了一些之前没有意识到的空白点。 原来上个世纪就有AI这个东西了 现阶段的主流模式&#xff0c;在许多年前其实是将来要发展的对象。 B/S指的是客户机/服务器结构模式 C/S是在B/S基础上发展过来的。三层结…

9月16日笔记

访问控制列表 访问控制列表(ACL)是访问控制项(Access Control Entry , ACE)的列表。安全对象的安全描述可以通过两种访问控制列表DACL和SACL进行。 DACL DACL 是由一条条的访问控制项(ACE)条目构成的&#xff0c;每条ACE定义了哪些用户或组对该对象拥有怎样的访问权限。DACL…

DeepCross模型实现推荐算法

1. 项目简介 A032-DeepCross项目是一个基于深度学习的推荐算法实现&#xff0c;旨在解决个性化推荐问题。随着互联网平台上信息和内容的爆炸式增长&#xff0c;用户面临着信息过载的困境&#xff0c;如何为用户提供高效、精准的推荐成为了关键。该项目背景基于现代推荐系统的发…

数仓规范:命名规范如何设计?

目录 0 前言 1 表命名规范 2 字段命名规范 3 任务命名规范 4 层级命名规范 5 自定义函数命名规范 6 视图和存储过程的命名规范 7 综合案例分析 8 常见陷阱和如何避免 9 工具和最佳实践 10 小结 想进一步了解数仓建设这门艺术的&#xff0c;可以订阅我的专栏数字化建设…

笔尖划出秋季的声息

笔尖划出秋季的声息 进入秋分&#xff0c;天气渐趋凉爽&#xff0c;天空青蓝明朗&#xff0c;难言伤感。 九月&#xff0c;把一些句子记录好&#xff0c;明年拿出来晒一晒&#xff0c;秋季也就有了答案。 1、经历 9月6日&#xff0c;台风“摩羯”席卷而过粤西&#xff0c;…

[Excel VBA]如何使用VBA按行拆分Excel工作表

如何使用VBA按行拆分Excel工作表 在Excel中&#xff0c;按行拆分工作表并生成多个新工作表是一项实用的技能&#xff0c;尤其在处理大量数据时。以下是一个VBA代码示例&#xff0c;能帮助你轻松实现这一功能。 1. 代码说明 本代码会根据源工作表中每个姓名创建一个新工作表&a…

mybatis 配置文件完成增删改查(二):根据条件查询一个

文章目录 参数占位符#{}:会将其替换为&#xff1f; ——为了防止sql注入${}:会将其替换为实际接收到的数据&#xff0c;拼sql ——无法防止sql注入 查询一个sql特殊字符的处理 参数占位符 #{}:会将其替换为&#xff1f; ——为了防止sql注入 ${}:会将其替换为实际接收到的数据…

2024年一区极光优化+分解+深度学习!VMD-PLO-Transformer-GRU多变量时间序列光伏功率预测

2024年一区极光优化分解深度学习&#xff01;VMD-PLO-Transformer-GRU多变量时间序列光伏功率预测 目录 2024年一区极光优化分解深度学习&#xff01;VMD-PLO-Transformer-GRU多变量时间序列光伏功率预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.中秋献礼&#…

python如何跨文件调用自己定义的函数

当自己定义函数过多时&#xff0c;只有一个python文件时代码会很长&#xff0c;不易理清代码框架&#xff0c;比如下面这段代码&#xff0c;如何隐藏具体函数细节呢&#xff1f;也就是把def函数放到另外一个python文件里步骤如下&#xff1a; 一个python文件代码篇幅过长 imp…

面试中如何回答关于 `RecyclerView` 性能优化的理解和实践经验

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 在面试中展示对 RecyclerView 性能优化的理解和实践经验&#xff0c;你可以从以下几个方面进行阐述&#xff1a; 1. 理解 RecyclerView 的工作…

Maven-五、属性

Maven 文章目录 Maven前言属性定义properties文件加载pom文件属性总结 前言 使用maven中的属性可以来简化我们的配置工作。 属性定义 在pom文件中可以使用**标签设置属性&#xff0c;属性名自定义,然后可以在使用${属性名}**文件中引用自己定义的属性。 使用属性进行配置&a…

干货 | 2024数智新时代制造业数字化创新实践白皮书(免费下载)

导读&#xff1a;本白皮书将对制造业发展历程、现状、趋势与核心难题做深入解读&#xff0c;并在此基础上提出了相应的制造行业解决方案,结合业内实践成功的客户案例来详析信息化转型的有效方法&#xff0c;以供生产制造行业的从业者参考交流。

【网络安全】依赖混淆漏洞实现RCE

未经许可&#xff0c;不得转载。 文章目录 正文 依赖混淆是一种供应链攻击漏洞&#xff0c;发生在企业的内部依赖包错误地从公共库&#xff08;如npm&#xff09;下载&#xff0c;而不是从其私有注册表下载。攻击者可以在公共注册表中上传一个与公司内部包同名的恶意包&#xf…

Java的IO流(二)

目录 Java的IO流&#xff08;二&#xff09; 字节缓冲流 基本使用 使用缓冲流复制文件 字符缓冲流 缓冲流读取数据原理 字符编码 字符集 转换流 序列化流与反序列化流 基本使用 禁止成员被序列化 序列号不匹配异常 打印流 基本使用 系统打印流与改变流向 Prop…

【Windows】快速帮你解决如何找到 Windows 上的 .condarc 文件

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

【VLM小白指北 (1) 】An Introduction to Vision-Language Modeling

开一个新坑Vision-Language Modeling (VLM) &#xff0c;原文76页&#xff0c;慢慢更&#xff0c;for beginners&#xff0c;但也不能之前啥都不会啊。 原文链接&#xff1a;An Introduction to Vision-Language Modeling Introduction 存在的问题&#xff1a;将语言与视觉相…

算法-K个一组翻转链表

// 要实现没k个节点进行翻转的操作&#xff0c;可以按照一下步骤进行 // 1.计算链表长度 // 2.分组反转 // 3. 使用一个虚拟头节点来处理边界情况 // 4.每次处理k个节点进行反转 // 5.如果剩余节点不足k个 则保持原有顺序 // 6.依次反转每组中的节点 // 1.使用prevGroupEEnd追…

【测试】——JUnit

&#x1f4d6; 前言&#xff1a;JUnit 是一个流行的 Java 测试框架&#xff0c;主要用于编写和运行单元测试&#xff0c;用来管理测试用例。本文采用JUnit 5 目录 &#x1f552; 1. 添加依赖&#x1f552; 2. 注解&#x1f558; 2.1 Test&#x1f558; 2.2 BeforeAll AfterAll&…

OceanBase 3.X 高可用 (一)

OceanBase 3.X 高可用&#xff08;一&#xff09; 一、分布式核心 OceanBase 3.x 采用的是paxos 协议&#xff0c;与raft协议相比。其复杂程度高&#xff0c;实现技术难度大。 Paxos 协议允许事务日志乱序发送&#xff0c;顺序提交。raft允许事务顺序发送&#xff0c;顺序提…

Windows Internals 7th Edition English Download

天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享天翼云盘是中国电信推出的云存储服务&#xff0c;为用户提供跨平台的文件存储、备份、同步及分享服务&#xff0c;是国内领先的免费网盘&#xff0c;安全、可靠、稳定、快速。天翼云盘为用户守护数据资产。https://cloud.1…