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