使用C#实现:把一段英语字母的每个单词都提取出来,存放在arraylist , 再使用hashet过滤到重复的,然后使用正则表达式分析每一个过滤后的词,判断是否有电话号码 最后再打印出来
时间: 2024-10-24 19:12:31 浏览: 11
c# ArrayList的使用方法小总结
5星 · 资源好评率100%
在C#中,你可以按照以下步骤实现这个功能:
1. **分割单词**:
首先,你需要将输入的字符串按空格分割成单词。可以使用`string.Split()`函数。例如:
```csharp
string input = "This is a test sentence with phone number 1234567890.";
string[] words = input.Split(' ');
```
2. **添加到ArrayList**:
创建一个`ArrayList`来存储唯一的单词:
```csharp
ArrayList uniqueWords = new ArrayList();
foreach (string word in words)
{
if (!uniqueWords.Contains(word))
{
uniqueWords.Add(word);
}
}
```
3. **使用HashSet过滤重复**:
可以替换上面的`ArrayList`为`HashSet`,它会自动去除重复项:
```csharp
HashSet<string> uniqueWordsHashSet = new HashSet<string>(words);
```
4. **正则表达式查找电话号码**:
定义一个正则表达式来匹配电话号码,比如`\d{3}-\d{3}-\d{4}`(假设美国电话格式)。使用`Regex.Matches()`方法查找所有匹配项:
```csharp
Regex phoneRegex = new Regex(@"\d{3}[-.\s]?\d{3}[-.\s]?\d{4}");
List<Match> matches = phoneRegex.Matches("").Cast<Match>().ToList();
```
注意这里使用了一个空字符串作为输入,因为`Matches()`方法需要非空字符串。
5. **检查并打印结果**:
检查是否有电话号码,并打印出单词列表和找到的电话号码:
```csharp
foreach (string word in uniqueWordsHashSet)
{
if (matches.Any(match => match.Value == word))
{
Console.WriteLine($"Word: {word}, Contains Phone Number: True");
}
else
{
Console.WriteLine($"Word: {word}, Does not contain a phone number.");
}
}
// 打印电话号码
foreach (Match match in matches)
{
Console.WriteLine("Phone Number: " + match.Value);
}
阅读全文