【工欲善其事】巧用 PowerShell 自动清除复制 PDF 文本时夹杂的换行符号

文章目录

  • 巧用 PowerShell 自动清除复制 PDF 文本时夹杂的换行符号
    • 1 问题描述
    • 2 解决方案
    • 3 具体步骤
    • 4 效果测试
    • 5 小结与复盘

巧用 PowerShell 自动清除复制 PDF 文本时夹杂的换行符号

1 问题描述

不知各位是否也为复制过来的文本中夹杂的回车换行符抓狂过?就是在复制 PDF 格式的一段跨行文本时,比如我今天要尝试翻译的 D3.js 中的一段话:
图 1 一段待复制的跨行 PDF 格式的纯文本

【图 1 一段待复制的跨行 PDF 格式的纯文本】

粘贴到 Sublime Text 后就成了“断开”的 N 行:
图 2 粘贴复制的 PDF 文本,得到每一行都单独断开的多条文本

【图 2 粘贴复制的 PDF 文本,得到每一行都单独断开的多条文本】

如果这一段我要用百度翻译来参考一下,得到的内容可能也会是断开的:
图 3 人为割裂开的多行文本可能影响到最终翻译结果

【图 3 人为割裂开的多行文本可能影响到最终翻译结果】

为此,我不得不在机器翻译前把这些换行符号手动清理掉:
图 4 手动清除换行符后的翻译结果

【图 4 手动清除换行符后的翻译结果】

其实 Sublime Text 也能对这类操作进行批量处理:

  • 先一次性选中多行;
  • End 到各行末尾;
  • 删除换行符。

但如果内容多了,这样的批量操作也不见得有多高效。

2 解决方案

于是,我希望有个自定义命令,最好是 PowerShell 脚本那种,一运行就自动把我复制的文本转成不带任何换行符的一整段内容。

3 具体步骤

初稿还是让 AI 帮我弄吧:

代码清单 1 通过 AI 帮我拟定的 PowerShell 脚本初稿

# 文件名:test.ps1
# 获取剪贴板内容
$clipboardContent = Get-Clipboard# 清理文本:替换多个换行符和空格
$cleanedContent = $clipboardContent -replace '\n+', ' ' -replace '\s+', ' ' | ForEach-Object { $_.Trim() }# 将清理后的内容写回剪贴板
Set-Clipboard -Value $cleanedContent# 输出结果
Write-Host "剪贴板内容已清理并替换!"

然而执行后却发现,粘贴出来的文本还是逐行断开的,虽然命令行里单独输出是连在一起的。于是又让它改进一下,结果 AI 就变智障了,改了好几次都没成功。只能自己排查了,结果发现是 ForEach-Object 的锅,需要手动合并一下:

# 获取剪贴板内容
$clipboardContent = Get-Clipboard;# 清理文本:替换多个换行符和空格
$result = $clipboardContent -replace '\r+', ' ' -replace '\s+', ' ' | ForEach-Object { $_.Trim() };# 统一合并为一行
$result = $result -join ' '# 将清理后的内容写回剪贴板
Set-Clipboard $result# 测试:输出结果
# Write-Host $result;# 清空临时变量
$result = '';

4 效果测试

再运行一次:

图 5 在 PowerShell 命令行实测脚本

【图 5 在 PowerShell 命令行实测脚本】

再按 Ctrl + V 粘贴到其他地方:

图 6 粘贴到 Sublime Text 验证处理结果(已变为一行)

【图 6 粘贴到 Sublime Text 验证处理结果(已变为一行)】

中间没有一处换行,大功告成!

5 小结与复盘

后面的工作都算是锦上添花吧:配置到 PATH 里面,方便在任何地方调用。

如果想把处理结果放到其他地方(比如 node 环境下的某个变量等等),则可以用同样的思路,让 AI 先出一版,这样会更有效率。我最初就想让它用原生 JavaScript 帮我实现一版,然后放到 node 里把结果输出到控制台,但后来觉得用不顺手,才改成直接放剪切板,这样就方便多了。总之使用场景千变万化,但万变不离其宗:你出点子,AI 出初稿。

另外,如果 AI 生成的代码不给力,建议最多重试三次。因为问得太多,既说明它在理解上有问题,也不排除你自己没把问题描述清楚。这种情况下,还是自己动手最靠谱(真·人工智能)。

这是人工智能时代程序员应该具备的最基本的核心竞争力——用自身扎实的基本功,打通 AI 到目标之间的最后一公里。

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

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

相关文章

python 爬虫 入门 一、基础工具

目录 一,网页开发者工具的使用 二、通过python发送请求 (一)、get (二)、带参数的get (三)、post 后续:数据解析 一,网页开发者工具的使用 我们可以用 requests 库…

国际期货收费行情源CTP推送式/期货配资软件开发对接行情源的技术性说明

在现代金融市场中,期货交易因其高风险和高回报特性而备受关注。为了满足期货交易者的需求,开发高效、稳定和安全的期货交易软件变得尤为重要。本文将对国际期货收费行情源CTP推送式及期货配资软件的开发对接行情源的技术细节进行详细说明。 一、CTP&…

2024双十一值得购买的好物有哪些?看完这五款好物让你不后悔!

随着一年一度的双十一购物狂欢节即将拉开帷幕,作为一名热衷于分享购物心得的博主,我今天特别想在这里为大家详细介绍五款我个人非常期待入手的好物。这些产品都是经过我精心挑选和试用的,我相信它们不仅能够满足我的需求,同样也能…

visio导出pdf公式变形问题杂谈

其实不会变形。 我自己的情况是直接用edge PDF阅读器打开pdf看到的是公式有变形(常见是字体、形状变了),但换一个pdf阅读器如adobe的就是正常的了 不过大家一般是用edge pdf阅读器直接打开查看,所以通过visio打印的方式导出pdf可…

力扣46~50题

题46(中等): 分析: 见注释 python代码: class Solution:def permute(self, nums: List[int]) -> List[List[int]]:#长度小于6,不就是告诉我用递归嘛res[]#递归函数def call_back(p_list,n_list):#判断…

Cesiumlab发布3dtiles白膜流程与前端可视化加载

Cesiumlab发布3dtiles白膜流程与前端可视化加载 1.前置准备 1.1 安装CesiumLab并注册(CesiumLab安装、CesiumLab账号注册以及不同授权类型的说明 CesiumLab系列教程 - 知乎 (zhihu.com)); 1.2 最好安装有Qgis可以进行简单数据处理(如果有完整数据可以…

可以在桌面上用的倒计时提醒app下载

在忙碌的工作日常中,我们常常需要记住各种截止日期和重要事件。为了确保这些任务按时完成,一款桌面倒计时提醒应用变得尤为重要。想象一下,当你在电脑桌面上就能清晰地看到剩余时间,这无疑会增加你的工作效率和紧迫感。 敬业签就…

华为eNSP实验:交换机流量控制之流量抑制

一、交换机流量控制之流量抑制 流量抑制是一种网络管理技术,用于防止过量的数据流通过网络设备,从而避免网络拥塞和性能下降。具体如下: 基本原理: 流量抑制通过设置特定的阈值来限制网络中的数据流量。当某个端口或接口的入站流…

Vue是一套构建用户界面的渐进式框架,常用于构建单页面应用

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…

u盘制作启动盘 重装windows系统

操作步骤一般都是把镜像iso文件下载好,然后使用u盘作为启动盘,使用启动盘制作工具,制作 官方重装系统程序 windows10系统下载连接 下载后点击启动 1 就是傻瓜式的安装 u盘安装就选2 然后一路下一步即可 等待完成,启动盘就制作好了 使用rufus 选择对应版本 https://ru…

基于SpringBoot的在线视频教育平台的设计与实现(论文+源码)_kaic

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于在线视频教育平台当然也不能排除在外,随着网络技术的不断成熟,带动了在线视频教育平台,它彻底改变了过…

Unity 从零开始搭建一套简单易用的UGUI小框架 基础分析篇

一套UGUI的小框架用一篇文章显然是不够的,因为会很长很长大约有上万字,想必读者也没有那个耐心一点点读完(主要是我也懒),所以我就将其分为三个部分 基础分析篇 功能撰写与优化篇 扩展与总结篇 我将其都放在了同一个专…

【管理】十张逻辑图说透:优秀员工,与普通员工的差别

优秀是一种习惯,如果你仔细留意,同等职位的高级员工与普通员工,在智力水平整体上差别不是很大,差别大的是工作习惯及方式。 01 琐碎工作 面对职场上的琐碎小事,很多员工会抱怨重复性工作,枯燥、无趣得不到…

学习threejs,THREE.LineDashedMaterial 虚线材质,基于gosper高斯帕曲线生成雪花动画

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.LineDashedMaterial虚…

Linux——echo-tail-重定向符

echo命令 类似printf 输出,最好加“ ” echo "hello Linux" 反引号 ‘ ’ 引用命令 echo ‘ pwd ’ 重定向符 > 和 >> > 覆盖 >> 追加 tail命令 查看文件尾部内容,追踪文件最新更改 tail -num 从尾部往上读num行&#…

linux 效率化 - 输入法 - fcitx5

安装 Fcitx5 1. 卸载 ibus 框架 由于 ibus 和 fcitx 可能会冲突,先卸载 ibus(暂未确认原因) sudo apt remove --purge ibus2. 安装 fcitx5 输入法框架 sudo apt update sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk…

【scene_manager】与 MoveIt 机器人的规划场景进行交互

scene_manager Scene Manager包是由 Robotnik 创建的 ROS 包,旨在帮助构建和与 MoveIt 机器人的规划场景进行交互。 背景信息 MoveIt 规划场景 是一个用于存储机器人周围世界的表示(外部碰撞)以及机器人自身状态(内部碰撞和当…

MySQL 执行流程是怎样的?

可以看到, MySQL 的架构共分为两层:Server 层和存储引擎层, Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现。存储引擎层负责数据的存储和读取。 InnoDB、MyISAM、Memory。不同的存储引擎共用一个 Server 层…

Docker新手必看:快速安装和配置BookStack在线文档系统

文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动BookStack容器4. 登录与简单使用5. 公网远程访问本地BookStack5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 前言 本文主要介绍如何在Linux系统使用Docker本地部署在线文档管理…

嵌入式-交叉编译链

一、Buildroot Official website: https://buildroot.org/downloads/manual/manual.html Buildroot是Linux平台上一个用于构建嵌入式Linux系统的框架,它简化了系统构建过程并实现了工作的自动化。以下是对Buildroot的详细介绍: 一、概述 …