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

【文本处理】如何在批量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.kler.cn/a/541209.html

相关文章:

  • Python——批量图片转PDF(GUI版本)
  • 攻防世界33 catcat-new【文件包含/flask_session伪造】
  • 5 个释放 安卓潜力的 Shizuku 应用
  • 机器学习笔记
  • http常用状态码
  • 指定路径安装Ollama
  • [2025年最新]2024.3版本idea无法安装插件问题解决
  • 思科模拟器配置VRRP-详细
  • 【MySQL — 数据库基础】深入解析MySQL的聚合查询
  • 【进程与线程】如何编写一个守护进程
  • Linux——信号的保存与处理
  • 火爆的DeepSeek大模型怎么和智能家居结合?
  • 在 Windows 系统中如何快速进入安全模式的两种方法
  • Android LifecycleOwner 闪退,java 继承、多态特性!
  • 从零开始:使用Jenkins实现高效自动化部署
  • 【Mybatis】动态 SQL:代码与数据的灵动共舞,奏响数据库查询的华丽乐章
  • 在CT107D单片机综合训练平台上实现外部中断控制LED闪烁
  • BUU34 [BSidesCF 2020]Had a bad day1 【php://filter】
  • 【机器学习】数据预处理之数据归一化
  • Vue 中的自定义指令是什么?如何使用?
  • WPS接入DeepSeek模型
  • 【Elasticsearch入门到落地】7、文档操作
  • 爬虫技巧汇总
  • 【系统架构设计师】操作系统 ③ ( 存储管理 | 页式存储弊端 - 段式存储引入 | 段式存储 | 段表 | 段表结构 | 逻辑地址 的 合法段地址判断 )
  • 打破静态网页:CSS 动画与过渡技术全解析
  • Aquatronica控制系统tcp存在信息泄露漏洞