【文本处理】如何在批量WORD和txt文本提取手机号码,固话号码,提取邮箱,删除中文,删除英文,提取车牌号等等一些文本提取固定格式的操作,基于WPF的解决方案

发布于:2025-02-11 ⋅ 阅读:(16) ⋅ 点赞:(0)

企业的应用场景

数据清洗:在进行数据导入或分析之前,往往需要对大量文本数据进行预处理,比如去除文本中的无关字符(中文、英文),只保留需要的联系信息(手机号码、固话号码、邮箱)。

信息筛选:在市场营销活动中,可能会收集到大量的客户反馈或留言文本,需要从这些文本中提取出客户的联系方式,以便进一步跟进。

以下为你提供一个基于 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 运行项目,在输入文本框中输入批量文本,点击相应的按钮即可执行提取或删除操作,处理结果会显示在输出文本框中。


网站公告

今日签到

点亮在社区的每一天
去签到