当前位置: 首页 > news >正文

【工欲善其事】巧用 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 到目标之间的最后一公里。

相关文章:

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

文章目录 巧用 PowerShell 自动清除复制 PDF 文本时夹杂的换行符号1 问题描述2 解决方案3 具体步骤4 效果测试5 小结与复盘 巧用 PowerShell 自动清除复制 PDF 文本时夹杂的换行符号 1 问题描述 不知各位是否也为复制过来的文本中夹杂的回车换行符抓狂过?就是在复…...

Maven与Gradle的区别

Maven与Gradle是两种流行的构建工具,广泛用于Java项目的管理和构建。以下是它们的对比,包括官网、Windows 11配置环境、在IDEA中的相同点和不同点,以及它们各自的优缺点。 官网 Maven官网: https://maven.apache.orgGradle官网: https://gr…...

【linux 多进程并发】0202 Linux进程fork之后父子进程间的文件操作有着相同的偏移记录,多进程操作文件的方法

0202 Linux进程资源 ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 文章目录 020…...

SQLite在安卓中的应用

在 Android 应用程序中,SQLite 是默认的嵌入式数据库解决方案,Android 系统为开发者提供了相应的 API 来管理 SQLite 数据库。通过使用 SQLiteOpenHelper 类和 SQLiteDatabase 类,开发者可以方便地创建、查询、更新和删除数据库中的数据。 以…...

Python数据库操作

前面的章节中学习了使用 Python 读写文件的方法,大家可以用文件方式来存放数据,不过使用文件方式时不容易管理,同时还容易丢失,会带来许多问题。目前主流的方法都是采用数据库软件,通过数据库软件来组织和存放数据&…...

交叉熵损失函数为代表的两层神经网络的反向传播量化求导计算公式

反向传播(back propagation,BP)算法也称误差逆传播,是神经网络训练的核心算法。我们通常说的 BP 神经网络是指应用反向传播算法进行训练的神经网络模型。反向传播算法的工作机制究竟是怎样的呢?我们以一个两层&#xf…...

数据结构——八大排序(上)

数据结构中的八大排序算法是计算机科学领域经典的排序方法,它们各自具有不同的特点和适用场景。以下是这八大排序算法的详细介绍: 一、插入排序(Insertion Sort) 核心思想:将数组中的所有元素依次跟前面已经排好的元…...

vxe-table 导入导出功能全解析

一、vxe-table 导入导出功能概述 vxe-table 的导入导出功能在数据处理中具有至关重要的作用。在现代数据管理和处理的场景中,高效地导入和导出数据是提高工作效率的关键。 对于导入功能而言,它允许用户将外部的表格数据,如 Excel 文件&…...

常用STL的操作以及特点

C 标准模板库(STL)提供了很多常用的数据结构和算法,极大简化了开发工作。STL 包括容器(如 vector、list、map 等)、算法(如排序、查找等)以及迭代器。以下是一些常用 STL 容器的操作以及它们的特…...

025 elasticsearch索引管理-Java原生客户端

文章目录 pom.xml1创建索引2.创建索引并设置settings信息3.创建索引并设置mapping信息4.删除索引库5.给未设置mapping的索引设置mapping elasticsearch版本7.10.2,要求java客户端与之相匹配,推荐Springboot版本是2.3以上版本 依赖配置使用的是JUnit 5&am…...

Gin框架操作指南10:服务器与高级功能

官方文档地址(中文):https://gin-gonic.com/zh-cn/docs/ 注:本教程采用工作区机制,所以一个项目下载了Gin框架,其余项目就无需重复下载,想了解的读者可阅读第一节:Gin操作指南&#…...

AIGC技术的学习 系列一

文章目录 前言一、AIGC技术演进1.1 图像视频生成1.2. 文本生成1.3. 多模态生成1.4. 小结二、CAD&CAE软件介绍2.1. CAD软件2.2. CAE软件2.3. 小结三、AIGC技术与CAD&CAE软件的集成案例3.1. 土建设计领域3.2. 机械设计领域四、结语五、参考文献总结前言 在全球智能制造的…...

Milvus×Dify半小时轻松构建RAG系统

最近,检索增强生成(RAG)技术在AI界引起了广泛关注。作为一种将知识库与生成模型结合的新型架构,RAG大大提升了AI应用的实际表现。而在构建RAG系统时,Milvus作为业界领先的开源向量数据库,扮演着关键角色。本…...

wireshark 解密浏览器https数据包

一、导出浏览器证书有两种方法 1、在浏览器快捷方式追加启动参数: --ssl-key-log-file"d:\log\2.log" C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe --ssl-key-log-file"d:\log\2.log" 2、环境变量中新建用…...

【HTML】构建网页的基石

我的主页:2的n次方_ HTML 是一种超文本标记语言,不仅有文本,还能包含图片,音频等 1. HTML 的文件基本结构 html 标签是整个 html 文件的最顶层标签,head 标签中写页面的属性,body 标签是页面中显示的…...

rust不允许在全局区定义普通变量!

文章目录 C 中的全局变量Rust 中的全局变量设计哲学的体现 在 C 和 Rust 中,全局变量的处理方式体现了这两种语言设计哲学上的一些根本性差异: C 中的全局变量 C 允许在全局作用域中定义变量。这些变量在程序的整个生命周期内都存在,从程序开…...

量化投资中的数据驱动决策:大数据如何改变金融市场

随着科技的进步,金融行业迎来了前所未有的变革,量化投资作为其中的代表,逐渐成为投资市场的主流。量化投资是基于数学模型、数据分析以及算法策略的投资方式,与传统依赖经验和直觉的投资方法相比,它的核心优势在于能够…...

MySQL 设计数据表

一个数据表主要包含信息有 : 表名、主键、字段、数据类型、索引,本节主要介绍表的命名规范、字段命名、字段的数据类型选择。 新建的表都是新建在 “item_name” 数据库中的,新建 “item_name” 数据库命令如下 : CREATE DATABASE item_name;新建数据库…...

【大数据技术基础 | 实验一】配置SSH免密登录

文章目录 一、实验目的二、实验要求三、实验原理(一)大数据实验一体机(二)SSH免密认证 四、实验环境五、实验内容和步骤(一)搭建集群服务器(二)添加域名映射(三&#xff…...

地级市碳排放效率测算2006-2021年

为了测算碳排放效率,研究者们采用了多种方法,其中超效率SBM(Slack-Based Measure)和超效率CCR(Charnes, Cooper and Rhodes)模型是常用的两种方法。这些模型可以有效地评估决策单元的相对有效性&#xff0c…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

大话软工笔记—需求分析概述

需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

基于服务器使用 apt 安装、配置 Nginx

🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

push [特殊字符] present

push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...