html本地字符串处理工具|去重、分割、求交集、求并集

在这里插入图片描述

源代码(保存到本地文件命名为 xxx.html,用浏览器打开该文件即可使用)

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><title>数据处理</title><style>input,textarea {width: 100%;box-sizing: border-box;}button {margin: 5px;}.section {margin-bottom: 15px;border: 1px solid #ccc;padding: 10px;}.output {height: 100px;overflow-y: auto;}.hidden {display: none;}</style>
</head><body><div class="sectionA"><h3>A 的输入界面</h3><textarea id="inputA" rows="3" oninput="hideOutput('A')"></textarea><span style="display: flex; align-items: center;"><p>分割符</p><input type="text" id="splitSymbolA" value="," placeholder="输入分割符,默认为英文逗号" style="width: 50px;"><button id="previewA" onclick="preview('A')">预览</button><select id="formatSelectA" onchange="preview('A')"><option value="1">["a","b"]</option><option value="2">[a,b]</option><option value="3">[a b]</option><option value="4">a\nb</option></select><input type="checkbox" id="removeDuplicatesA" style="margin-left: 10px; width: 30px;" onclick="preview('A')"><label for="removeDuplicates">去重</label><input type="checkbox" id="filterEmptyA" style="margin-left: 10px; width: 30px;" onclick="preview('A')"><label for="filterEmpty">过滤空值</label><input type="checkbox" id="useSplitSymbolA" style="margin-left: 10px; width: 30px;" onclick="preview('A')" checked="true"><label for="useSplitSymbol">使用分隔符</label><input type="checkbox" id="splitByEnterA" style="margin-left: 10px; width: 30px;" onclick="preview('A')"><label for="splitByEnter">回车分割</label><!-- 更多分割符list --><input type="checkbox" id="showSplitByMoreSymbolA" style="margin-left: 10px; width: 30px;" onclick="showSplitByMoreSymbol('A')"><label for="showSplitByMoreSymbol">更多分割符(使用|分隔)</label></span><input type="text" id="splitByMoreSymbolA" value="" style="display:none;" placeholder="输入分割符,默认为|" style="width: 50px;" onchange="preview('A')"><div class="section outputA" style="display: none;"><span style="display: flex; align-items: center;"><h4>A 输出框</h4> <p id="outputACount"></p></span><textarea id="outputA" readonly style="border: none; background-color: #FFFFCC;"></textarea></div></div><div class="sectionB"><h3>B 的输入界面</h3><textarea id="inputB" rows="3" oninput="hideOutput('B')"></textarea><span style="display: flex; align-items: center;"><p>分割符</p><input type="text" id="splitSymbolB" value="," placeholder="输入分割符,默认为英文逗号" style="width: 50px;"><button id="previewB" onclick="preview('B')">预览</button><select id="formatSelectB" onchange="preview('B')"><option value="1">["a","b"]</option><option value="2">[a,b]</option><option value="3">[a b]</option><option value="4">a\nb</option></select><input type="checkbox" id="removeDuplicatesB" style="margin-left: 10px; width: 30px;" onclick="preview('B')"><label for="removeDuplicates">去重</label><input type="checkbox" id="filterEmptyB" style="margin-left: 10px; width: 30px;" onclick="preview('B')"><label for="filterEmpty">过滤空值</label><input type="checkbox" id="useSplitSymbolB" style="margin-left: 10px; width: 30px;" onclick="preview('B')" checked="true"><label for="useSplitSymbol">使用分隔符</label><input type="checkbox" id="splitByEnterB" style="margin-left: 10px; width: 30px;" onclick="preview('B')"><label for="splitByEnter">回车分割</label><!-- 更多分割符list --><input type="checkbox" id="showSplitByMoreSymbolB" style="margin-left: 10px; width: 30px;" onclick="showSplitByMoreSymbol('B')"><label for="showSplitByMoreSymbol">更多分割符(使用|分隔)</label></span><input type="text" id="splitByMoreSymbolB" value="" style="display:none;" placeholder="输入分割符,默认为|" style="width: 50px;" onchange="preview('B')"><div class="section outputB" style="display: none;"><span style="display: flex; align-items: center;"><h4>A 输出框</h4> <p id="outputBCount"></p></span><textarea id="outputB" readonly style="border: none; background-color: #FFFFCC;"></textarea></div></div><hr><div class="sectionOut"><h3>AB 之间的数据处理</h3><button id="intersection">求交集(去重)</button><button id="union">求并集(去重)</button><button id="aNotB">求 A 中有 B 中没有(去重)</button><button id="bNotA">求 B 中有 A 中没有(去重)</button></div><div class="sectionResult"><h4>结果</h4><textarea id="inputC" rows="3" placeholder="暂无匹配结果" readonly></textarea></div><span style="display: flex; align-items: center;"><p>分割符</p><input type="text" id="splitSymbolC" value="|" placeholder="输入分割符,默认为|" style="width: 50px;"><button id="previewC" onclick="preview('C')">预览</button><select id="formatSelectC" onchange="preview('C')"><option value="1">["a","b"]</option><option value="2">[a,b]</option><option value="3">[a b]</option><option value="4">a\nb</option></select><input type="checkbox" id="removeDuplicatesC" style="margin-left: 10px; width: 30px;" onclick="preview('C')"><label for="removeDuplicates">去重</label><input type="checkbox" id="filterEmptyC" style="margin-left: 10px; width: 30px;" onclick="preview('C')"><label for="filterEmpty">过滤空值</label><input type="checkbox" id="useSplitSymbolC" style="margin-left: 10px; width: 30px;" onclick="preview('C')" checked="true"><label for="useSplitSymbol">使用分隔符</label><input type="checkbox" id="splitByEnterC" style="margin-left: 10px; width: 30px;" onclick="preview('C')"><label for="splitByEnter">回车分割</label><!-- 更多分割符list --><input type="checkbox" id="showSplitByMoreSymbolC" style="margin-left: 10px; width: 30px;" onclick="showSplitByMoreSymbol('C')"><label for="showSplitByMoreSymbol">更多分割符(使用|分隔)</label></span><input type="text" id="splitByMoreSymbolC" value="" style="display:none;" placeholder="输入分割符,默认为|" style="width: 50px;" onchange="preview('C')"><div class="section outputC" style="display: none;"><span style="display: flex; align-items: center;"><h4>结果 格式化 输出框</h4> <p id="outputCCount"></p></span><textarea id="outputC" readonly style="border: none; background-color: #FFFFCC;"></textarea></div><script>// 隐藏输出框function hideOutput(opt) {document.getElementById(`output${opt}`).value = "";document.querySelector(`.section.output${opt}`).style.display = 'none';}// 展示showSplitByMoreSymbolfunction showSplitByMoreSymbol(opt) {let showSplitByMoreSymbol = document.getElementById(`showSplitByMoreSymbol${opt}`).checked;if(showSplitByMoreSymbol){document.getElementById(`splitByMoreSymbol${opt}`).style.display = 'block';}else{document.getElementById(`splitByMoreSymbol${opt}`).style.display = 'none';}preview(opt);}// 预览按钮function preview(opt) {let input = document.getElementById(`input${opt}`).value;let format = document.getElementById(`formatSelect${opt}`).value;let splitSymbol = document.getElementById(`splitSymbol${opt}`).value;let removeDuplicates = document.getElementById(`removeDuplicates${opt}`).checked;let filterEmpty = document.getElementById(`filterEmpty${opt}`).checked;let splitByEnter = document.getElementById(`splitByEnter${opt}`).checked;let useSplitSymbol = document.getElementById(`useSplitSymbol${opt}`).checked;let showSplitByMoreSymbol = document.getElementById(`showSplitByMoreSymbol${opt}`).checked;let splitByMoreSymbol = document.getElementById(`splitByMoreSymbol${opt}`).value;console.log('input', input,'format', format,'splitSymbol', splitSymbol,'removeDuplicates', removeDuplicates,'filterEmpty', filterEmpty,'splitByEnter', splitByEnter,'useSplitSymbol', useSplitSymbol);const separators = []; // 存储所有可能的分隔符// 使用回车分割if(splitByEnter){separators.push(/\n/g);}// 使用分隔符分割if(useSplitSymbol){separators.push(splitSymbol);}// 使用跟多分割符if(showSplitByMoreSymbol){splitByMoreSymbol.split('|').forEach(symbol => {if(symbol){separators.push(symbol);}})}// 开始分割let parts;if (separators.length > 0) {parts = separators.reduce((acc, separator) => {return acc.reduce((subAcc, subStr) => {return subAcc.concat(subStr.split(separator));}, []);}, [input]);} else {parts = separators.length > 0 ? input.split(separators.join('|')) : [input];}// console.log('parts', parts);if (removeDuplicates) {parts = Array.from(new Set(parts));}// console.log('parts', parts);if (filterEmpty) {parts = parts.filter(p => p.trim() !== '');}console.log(`parts${opt}`, parts);document.getElementById(`output${opt}Count`).innerText = `  (${parts.length}个)`;let result = '';if (format === '1') {result = JSON.stringify(parts.map(p => p.trim()));} else if (format === '2') {result = '[' + parts.map(p => p.trim()).join(',') + ']';} else if (format === '3') {result = '[' + parts.join(' ') + ']';} else if (format === '4') {result = parts.join('\n');}document.getElementById(`output${opt}`).value = result;document.querySelector(`.section.output${opt}`).style.display = 'block';return parts;}function getParts(opt) {if(opt==='A'){return preview('A');}if(opt==='B'){return preview('B');}return [];}document.getElementById('intersection').addEventListener('click', function () {let partsA = getParts('A');let partsB = getParts('B');let intersection = Array.from(partsA).filter(x => partsB.includes(x));document.getElementById('inputC').value = intersection.join('|'); console.log('intersection', intersection);});document.getElementById('union').addEventListener('click', function () {let partsA = getParts('A');let partsB = getParts('B');let union = Array.from(new Set([...partsA, ...partsB]));document.getElementById('inputC').value = union.join('|');console.log('union', union);});document.getElementById('aNotB').addEventListener('click', function () {let partsA = getParts('A');let partsB = getParts('B');let aNotB = Array.from(partsA).filter(x => !partsB.includes(x));document.getElementById('inputC').value = aNotB.join('|');console.log('aNotB', aNotB);});document.getElementById('bNotA').addEventListener('click', function () {let partsA = getParts('A');let partsB = getParts('B');let bNotA = Array.from(partsB).filter(x => !partsA.includes(x));document.getElementById('inputC').value = bNotA.join('|');console.log('bNotA', bNotA);});</script>
</body></html>

配置到油猴脚本

将上述html代码放到 newWindow.document.write 中即可。

// ==UserScript==
// @name         Open Webpage from Menu
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Open a new webpage from a menu command
// @author       You
// @match        *://*/*
// @grant        GM_registerMenuCommand
// ==/UserScript==(function() {'use strict';// 使用 GM_registerMenuCommand 注册一个菜单命令GM_registerMenuCommand("Open My Webpage", function() {// 当用户点击菜单命令时,使用 window.open 打开一个新的网页// 这里将 'https://example.com' 替换为你想要打开的网页的 URLwindow.open('https://example.com', '_blank');});
})();

或者

// ==UserScript==
// @name         Open HTML in Window
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Open a window with custom HTML
// @author       You
// @match        *://*/*
// @grant        GM_registerMenuCommand
// ==/UserScript==(function() {'use strict';GM_registerMenuCommand("Open My HTML", function() {let htmlCode = `<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>My Custom Page</title></head><body><h1>Hello, World!</h1><p>This is a custom HTML page opened via Tampermonkey script.</p></body></html>`;let newWindow = window.open('', '_blank');newWindow.document.write(htmlCode);});
})();

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

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

相关文章

毕业项目推荐:基于yolov8/yolov5的行人检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

企业二要素如何用C#实现

一、什么是企业二要素&#xff1f; 企业二要素&#xff0c;通过输入统一社会信用代码、企业名称或统一社会信用代码、法人名称&#xff0c;验证两者是否匹配一致。 二、企业二要素适用哪些场景&#xff1f; 例如&#xff1a;信用与金融领域 1.信用评级&#xff1a;信用评级…

微信小程序中 “页面” 和 “非页面” 的区别

微信小程序中 “页面” 和 “非页面” 的区别&#xff0c;并用表格进行对比。 核心概念&#xff1a; 页面 (Page)&#xff1a; 页面是微信小程序中用户可以直接交互的视图层&#xff0c;也是小程序的基本组成部分。每个页面都有自己的 WXML 结构、WXSS 样式和 JavaScript 逻辑…

互联网直播点播平台EasyDSS无人机视频推拉流技术实现工地远程监控巡检直播

在建筑行业&#xff0c;施工现场的安全管理和实时监控一直是项目管理中的重点。随着技术的进步&#xff0c;无人机工地直播技术成为了一种新兴的解决方案&#xff0c;它不仅能够提高施工透明度&#xff0c;还能够加强现场安全管理。EasyDSS作为一种先进的流媒体技术平台&#x…

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(四)

****非斜体正文为原文献内容&#xff08;也包含笔者的补充&#xff09;&#xff0c;灰色块中是对文章细节的进一步详细解释&#xff01; 四、提示范式&#xff08;Explanation for Prompting Paradigm&#xff09; 随着语言模型规模的扩大&#xff0c;基于提示&#xff08;prom…

基于区块链的共享算力系统概念方案

以下白皮书为一个去中心化的 GPU 共享算力系统的概念性方案参考&#xff0c;旨在帮助社区和开发者初步了解该系统的设计思路与运作机制。该方案受到 IPFS、区块链&#xff08;如比特币、以太坊&#xff09;等去中心化项目的启发&#xff0c;结合了激励机制和点对点资源共享理念…

RedisInsight:企业级 Redis 管理与分析工具

1 介绍 RedisInsight 是一款专为企业级用户设计的 Redis 管理与分析工具,旨在简化 Redis 数据库的管理和优化操作。通过直观的图形化界面和强大的功能集,RedisInsight 提供了全面的监控、诊断、性能优化以及数据管理能力,帮助企业和开发团队更高效地管理和运维 Redis 实例。…

【循环神经网络】RNN介绍

在人工神经网络中&#xff0c;”浅层网络”是指具有一个输入层、一个输出层和最多一个没有循环连接的隐藏层的网络。随着层数的增加&#xff0c;网络的复杂性也在增加。更多的层或循环连接通常会增加网络的深度&#xff0c;并使其能够提供不同级别的数据表示和特征提取&#xf…

vue v-for 数据增加页面不刷新

<div style"float:left;border:1px solid red;height:100px;width:600px;"><el-form-item label"多语言配置" style"width:700px;" prop"validTanleHead"><el-input style"width: 180px" placeholder"请…

DeepSeek v3为何爆火?如何用其集成Milvus搭建RAG?

最近&#xff0c;DeepSeek v3&#xff08;一个MoE模型&#xff0c;拥有671B参数&#xff0c;其中37B参数被激活&#xff09;模型全球爆火。 作为一款能与Claude 3.5 Sonnet&#xff0c;GPT-4o等模型匹敌的开源模型DeepSeek v3不仅将其算法开源&#xff0c;还放出一份扎实的技术…

【C语言】_野指针

目录 1. 野指针常见成因 1.1 指针未初始化 1.2 指针越界访问 1.3 指针指向的空间释放了 2. 规避野指针 2.1 指针初始化 2.2 小心指针越界 2.3 指针变量使用前检查有效性&#xff0c;不再使用时及时置NULL 2.4 避免返回局部变量的地址 野指针&#xff1a;野指针就是指针…

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案 问题描述 在IEEE PDF eXpress上上传论文后&#xff0c;出现Font XXX is not embedded的问题。 该问题是指你所插入的图片等&#xff0c;没有将对应的字体嵌入进去。 解决方案 以下以Origin Lab图片…

什么情况会导致JVM退出?

大家好&#xff0c;我是锋哥。今天分享关于【什么情况会导致JVM退出?】面试题。希望对大家有帮助&#xff1b; 什么情况会导致JVM退出? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 JVM&#xff08;Java Virtual Machine&#xff09;在不同情况下可能会退出&am…

Linux内核编程(二十一)USB应用及驱动开发

一、基础知识 1. USB接口是什么&#xff1f; USB接口&#xff08;Universal Serial Bus&#xff09;是一种通用串行总线&#xff0c;广泛使用的接口标准&#xff0c;主要用于连接计算机与外围设备&#xff08;如键盘、鼠标、打印机、存储设备等&#xff09;之间的数据传输和电…

CSS——1.优缺点

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><link rel"stylesheet" type"text/css" href"1-02.css"/></head><body><!--css&#xff1a;层叠样式表…

攻防世界 - Web - Level 3 | simple_js

关注这个靶场的其它相关笔记&#xff1a;攻防世界&#xff08;XCTF&#xff09; —— 靶场笔记合集-CSDN博客 0x01&#xff1a;考点速览 本题考察的是 JS 的代码审计&#xff0c;以下是你需要了解的知识点&#xff1a; String.fromCharCode() -> 将接收的 Unicode 编码转换…

关系分类(RC)模型和关系抽取(RE)模型的区别

目标不同 关系分类模型&#xff1a;对给定的实体对在给定句子中预测其关系类型。两阶段&#xff08;RC&#xff09; 关系抽取模型&#xff1a;从句子中识别出所有潜在实体对&#xff0c;并为其预测关系类型。一阶段&#xff08;NERRE&#xff09; 训练/预测阶段输入输出数据不…

永磁同步电机控制算法--最大转矩电流比控制(牛顿迭代法)

一、原理介绍 搭建了基于牛顿迭代法的MTPA双闭环矢量控制系统 二、仿真验证 在MATLAB/simulink里面验证所提算法&#xff0c;采用和实验中一致的控制周期1e-4&#xff0c;电机部分计算周期为1e-6。仿真模型如下所示&#xff1a; 对直接公式计算法和牛顿迭代法进行仿真对比验…

数据结构—树的定义与性质

目录 1.树的定义 2.基本术语 3.树的性质 1.树的定义 树是n&#xff08;n≥0&#xff09;个结点的有限集。 n0时&#xff0c;称为空树。 &#xff08;1&#xff09;树有且只有一个特定的结点&#xff0c;称为根节点。 &#xff08;2&#xff09;当n>1时&#xff0c;其余…

vue数据请求通用方案:axios的options都有哪些值

Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用在浏览器和 Node.js 中。 在使用 Axios 发送请求时&#xff0c;可以通过传递一个配置对象来指定请求的各种选项。 以下是一些常用的 Axios 配置选项及其说明&#xff1a; 1.url: &#xff08;必需&#xff09;请求的 …