【文本处理】如何在批量WORD和txt文本提取手机号码,固话号码,提取邮箱,删除中文,删除英文,提取车牌号等等一些文本提取固定格式的操作,基于WPF的解决方案
企业的应用场景
数据清洗:在进行数据导入或分析之前,往往需要对大量文本数据进行预处理,比如去除文本中的无关字符(中文、英文),只保留需要的联系信息(手机号码、固话号码、邮箱)。
信息筛选:在市场营销活动中,可能会收集到大量的客户反馈或留言文本,需要从这些文本中提取出客户的联系方式,以便进一步跟进。

以下为你提供一个基于 WPF(Windows Presentation Foundation)实现批量文本中提取手机号码、固话号码、邮箱,以及删除中文、英文的解决方案,同时会给出相应的应用场景和详细代码步骤。
详细代码步骤
1. 创建 WPF 项目
首先,打开 Visual Studio,创建一个新的 WPF 应用程序项目。
2. 设计界面
在 MainWindow.xaml 中设计如下界面,包含一个文本框用于输入批量文本,几个按钮分别用于执行不同的提取和删除操作,以及一个文本框用于显示处理结果。
xml
<Window x:Class="TextProcessingApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="文本处理工具" Height="450" Width="800"><Grid><Label Content="输入批量文本:" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/><TextBox x:Name="inputTextBox" HorizontalAlignment="Left" Height="150" Margin="10,30,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="760"/><Button Content="提取手机号码" HorizontalAlignment="Left" Margin="10,190,0,0" VerticalAlignment="Top" Width="120" Click="ExtractMobileNumbers_Click"/><Button Content="提取固话号码" HorizontalAlignment="Left" Margin="140,190,0,0" VerticalAlignment="Top" Width="120" Click="ExtractLandlineNumbers_Click"/><Button Content="提取邮箱" HorizontalAlignment="Left" Margin="270,190,0,0" VerticalAlignment="Top" Width="120" Click="ExtractEmails_Click"/><Button Content="删除中文" HorizontalAlignment="Left" Margin="400,190,0,0" VerticalAlignment="Top" Width="120" Click="RemoveChinese_Click"/><Button Content="删除英文" HorizontalAlignment="Left" Margin="530,190,0,0" VerticalAlignment="Top" Width="120" Click="RemoveEnglish_Click"/><Label Content="处理结果:" HorizontalAlignment="Left" Margin="10,230,0,0" VerticalAlignment="Top"/><TextBox x:Name="outputTextBox" HorizontalAlignment="Left" Height="180" Margin="10,250,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="760" IsReadOnly="True"/></Grid>
</Window>
3. 编写代码逻辑
在 MainWindow.xaml.cs 中实现具体的提取和删除逻辑。
csharp
using System;
using System.Text.RegularExpressions;
using System.Windows;namespace TextProcessingApp
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void ExtractMobileNumbers_Click(object sender, RoutedEventArgs e){string inputText = inputTextBox.Text;string pattern = @"1[3-9]\d{9}";MatchCollection matches = Regex.Matches(inputText, pattern);string result = string.Join(Environment.NewLine, matches);outputTextBox.Text = result;}private void ExtractLandlineNumbers_Click(object sender, RoutedEventArgs e){string inputText = inputTextBox.Text;string pattern = @"\d{3}-\d{7,8}|\d{4}-\d{7,8}";MatchCollection matches = Regex.Matches(inputText, pattern);string result = string.Join(Environment.NewLine, matches);outputTextBox.Text = result;}private void ExtractEmails_Click(object sender, RoutedEventArgs e){string inputText = inputTextBox.Text;string pattern = @"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}";MatchCollection matches = Regex.Matches(inputText, pattern);string result = string.Join(Environment.NewLine, matches);outputTextBox.Text = result;}private void RemoveChinese_Click(object sender, RoutedEventArgs e){string inputText = inputTextBox.Text;string pattern = @"[\u4e00-\u9fa5]";string result = Regex.Replace(inputText, pattern, "");outputTextBox.Text = result;}private void RemoveEnglish_Click(object sender, RoutedEventArgs e){string inputText = inputTextBox.Text;string pattern = @"[a-zA-Z]";string result = Regex.Replace(inputText, pattern, "");outputTextBox.Text = result;}}
}
代码解释
- 正则表达式:使用正则表达式来匹配手机号码、固话号码、邮箱,以及删除中文和英文。
- 手机号码:
1[3-9]\d{9}匹配以 1 开头,第二位是 3 - 9 之间的数字,后面跟 9 位数字的手机号码。 - 固话号码:
\d{3}-\d{7,8}|\d{4}-\d{7,8}匹配 3 位区号加 7 到 8 位号码,或者 4 位区号加 7 到 8 位号码的固话格式。 - 邮箱:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}匹配常见的邮箱格式。 - 中文:
[\u4e00-\u9fa5]匹配所有中文字符。 - 英文:
[a-zA-Z]匹配所有英文字母。
- 手机号码:
- 事件处理:每个按钮的
Click事件处理方法中,首先获取输入文本框中的文本,然后根据相应的正则表达式进行匹配或替换操作,最后将结果显示在输出文本框中。
运行项目
按下 F5 运行项目,在输入文本框中输入批量文本,点击相应的按钮即可执行提取或删除操作,处理结果会显示在输出文本框中。
相关文章:
【文本处理】如何在批量WORD和txt文本提取手机号码,固话号码,提取邮箱,删除中文,删除英文,提取车牌号等等一些文本提取固定格式的操作,基于WPF的解决方案
企业的应用场景 数据清洗:在进行数据导入或分析之前,往往需要对大量文本数据进行预处理,比如去除文本中的无关字符(中文、英文),只保留需要的联系信息(手机号码、固话号码、邮箱)。…...
Linux系统引导与服务管理
目录 一、Linux引导过程 1、引导过程概述 1.1、BIOS开机自检 1.2、MBR读取 1.3、加载引导加载程序(GRUB) 1.4、内核加载 1.5、初始化进程(init) 二、服务 2.1、服务类型 2.2、服务管理工具 三、运行级别 四、systemd …...
网络工程师 (30)以太网技术
一、起源与发展 以太网技术起源于20世纪70年代,最初由Xerox公司的帕洛阿尔托研究中心(PARC)开发。最初的以太网采用同轴电缆作为传输介质,数据传输速率为2.94Mbps(后发展为10Mbps),主要用于解决…...
react项目引入tailwindcss不生效解决方案
根据tailwindcss官网的操作步骤下来,样式未生效,且未报错,看了挺多的资料,还是并未解决。 后面在另一个项目尝试时,报了下面的问题: Error: PostCSS plugin tailwindcss requires PostCSS 8 根据这个链接…...
【C#】条件运算符
1.逻辑与(&&) Console.WriteLine(true && true);//true Console.WriteLine(true && false);//false Console.WriteLine(false && false);//false2.逻辑或(||) Console.WriteLine(true || true);//true Console.WriteLine(true || false);//t…...
Windows11+PyCharm利用MMSegmentation训练自己的数据集保姆级教程
系统版本:Windows 11 依赖环境:Anaconda3 运行软件:PyCharm 一.环境配置 通过Anaconda Prompt(anaconda)打开终端创建一个虚拟环境 conda create --name mmseg python3.93.激活虚拟环境 conda activate mmseg 4.安装pytorch和cuda tor…...
WPS计算机二级•文档的文本样式与编号
听说这是目录哦 标题级别❤️新建文本样式 快速套用格式🩷设置标题样式 自定义设置多级编号🧡使用自动编号💛取消自动编号💚设置 页面边框💙添加水印🩵排版技巧怎么分栏💜添加空白下划线&#x…...
Word中Ctrl+V粘贴报错问题
Word中CtrlV粘贴时显示“文件未找到:MathPage.WLL”的问题 Word的功能栏中有MathType,但无法使用,显示灰色。 解决方法如下: 首先找到MathType安装目录下MathPage.wll文件以及MathType Commands 2016.dotm文件,分别复…...
python-leetcode 24.回文链表
题目: 给定单链表的头节点head,判断该链表是否为回文链表,如果是,返回True,否则,返回False 输入:head[1,2,2,1] 输出:true 方法一:将值复制到数组中后用双指针法 有两种常用的列表实现&#…...
数据治理双证通关经验分享 | CDGA/CDGP备考全指南
历经1个月多的系统准备,本人于2024年顺利通过DAMA China的CDGA(数据治理工程师)和CDGP(数据治理专家)双认证。现将备考经验与资源体系化整理,助力从业者高效通关。 🌟 认证价值与政策背景 根据…...
3.4 学习UVM中的uvm_monitor类分为几步?
文章目录 前言1. 定义2. 核心功能3. 适用场景4. 使用方法5. 完整代码示例5.1 事务类定义5.2 Monitor 类定义5.3 Scoreboard 类定义5.4 测试平台 6. 代码说明7. 总结 前言 以下是关于 UVM 中 uvm_monitor 的详细解释、核心功能、适用场景、使用方法以及一个完整的代码示例&…...
Java在大数据处理中的应用:从MapReduce到Spark
Java在大数据处理中的应用:从MapReduce到Spark 大数据时代的到来让数据的存储、处理和分析变得前所未有的重要。随着数据量的剧增,传统的单机计算方式已经无法满足处理需求。为了解决这个问题,许多分布式计算框架应运而生,其中Ma…...
日常吐槽。
一、写在前面 stereopy日常出bug(github issue里得有一半的问题是我提的,当然也有可能是因为我菜),stereopy自己生成的anndata自己不能计算空间共现关系,还是靠squidpy才能计算。另外还要一些函数一开并行计算就报错,这里留一些s…...
2025最新版Node.js下载安装~保姆级教程
1. node中文官网地址:http://nodejs.cn/download/ 2.打开node官网下载压缩包: 根据操作系统不同选择不同版本(win7系统建议安装v12.x) 我这里选择最新版win 64位 3.安装node ①点击对话框中的“Next”,勾选同意后点…...
机器学习:学习记录(二)
1. 机器学习中的常用函数 logistic函数(sigmoid函数):非线性激活函数,将R区间映射到(0,1)区间 ReLU函数:非线性激活函数,简单可以写作max(0,x),在0处不可导,但是可以人为定义其导数…...
迁移学习 Transfer Learning
迁移学习(Transfer Learning)是什么? 迁移学习是一种机器学习方法,它的核心思想是利用已有模型的知识来帮助新的任务或数据集进行学习,从而减少训练数据的需求、加快训练速度,并提升模型性能。 …...
实现:多活的基础中间件
APIRouter : 路由分发服务 API Router 是一个 HTTP 反向代理和负载均衡器,部署在公有云中作为 HTTP API 流量的入口,它能识别 出流量的归属 shard ,并根据 shard 将流量转发到对应的 ezone 。 API Router 支持多种路由键&am…...
Mybatis源码01 - 总体框架设计
Mybatis总体框架设计 文章目录 Mybatis总体框架设计一:MyBatis架构概览1:接口层1.1:使用传统的MyBatis提供的API1.2:使用Mapper接口 2:数据处理层【核心】2.1:参数映射和动态SQL语句生成2.2:SQL…...
在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合
文章目录 传统的神经网络框架存在的问题一. Transformer架构综述1.1 transformer的输入1.1.1 词向量1.1.2 位置编码(Positional Encoding)1.1.3 编码器与解码器结构1.1.4 多头自注意力机制 二.Transformer分步详解2.1 传统词向量存在的问题2.2 详解编解码…...
Selenium WebDriver自动化测试(扩展篇)--Jenkins持续集成
文章目录 一、引言二、Jenkins简介三、安装部署Jenkins安装部署 四、集成Git与Maven安装必要的插件配置Git配置Maven 五、创建Job创建自由风格的项目配置源码管理配置构建触发器配置构建环境配置构建步骤配置Post-build Actions 六、触发构建示例:GitHub Webhook触发…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
