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

【文本处理】如何在批量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 运行项目,在输入文本框中输入批量文本,点击相应的按钮即可执行提取或删除操作,处理结果会显示在输出文本框中。

http://www.lryc.cn/news/535257.html

相关文章:

  • Linux系统引导与服务管理
  • 网络工程师 (30)以太网技术
  • react项目引入tailwindcss不生效解决方案
  • 【C#】条件运算符
  • Windows11+PyCharm利用MMSegmentation训练自己的数据集保姆级教程
  • WPS计算机二级•文档的文本样式与编号
  • Word中Ctrl+V粘贴报错问题
  • python-leetcode 24.回文链表
  • 数据治理双证通关经验分享 | CDGA/CDGP备考全指南
  • 3.4 学习UVM中的uvm_monitor类分为几步?
  • Java在大数据处理中的应用:从MapReduce到Spark
  • 日常吐槽。
  • 2025最新版Node.js下载安装~保姆级教程
  • 机器学习:学习记录(二)
  • 迁移学习 Transfer Learning
  • 实现:多活的基础中间件
  • Mybatis源码01 - 总体框架设计
  • 在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合
  • Selenium WebDriver自动化测试(扩展篇)--Jenkins持续集成
  • Wiki文档转换为Word技术
  • 1.【线性代数】——方程组的几何解释
  • 力扣1448. 统计二叉树中好节点的数目
  • 【C#零基础从入门到精通】(二)——C#注释和命名法详解
  • SQLServer的创建,表创建,主键,约束,模糊查询
  • DeepSeek深度思考:客户端(Android/iOS)架构设计指南
  • 亚远景-精通ASPICE:专业咨询助力汽车软件开发高效合规
  • OpenCV 相机标定流程指南
  • 项目场景拷打
  • Vue2生命周期面试题
  • 【每日一题 | 2025】2.3 ~ 2.9