123 个问题
首先,确保所有手机号码格式一致。这可以包括:
- 移除空格、括号、连字符等非数字字符。
- 处理国际代码,例如将所有号码都标准化为国际格式(+86 for China)。
HashSet
是C#中的一个集合,它只包含唯一的元素,非常适合用于去重操作。
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
List<string> phoneNumbers = new List<string>
{
"+8613712345678", "13712345678", "+86 137 1234 5678", "137-1234-5678"
};
HashSet<string> uniqueNumbers = new HashSet<string>();
foreach (string number in phoneNumbers)
{
string standardizedNumber = StandardizePhoneNumber(number);
uniqueNumbers.Add(standardizedNumber);
}
foreach (string number in uniqueNumbers)
{
Console.WriteLine(number);
}
}
public static string StandardizePhoneNumber(string number)
{
// 移除所有非数字字符
string digitsOnly = System.Text.RegularExpressions.Regex.Replace(number, @"\D", "");
// 假设所有号码都是中国号码,没有国际前缀的补上+86
if (digitsOnly.Length == 11 && !digitsOnly.StartsWith("86"))
{
digitsOnly = "86" + digitsOnly;
}
// 加上国际前缀
return "+" + digitsOnly;
}
}
如果号码数量庞大,可以考虑使用数据库来存储和去重。数据库中的UNIQUE约束和DISTINCT关键字都可以帮助去重。
CREATE TABLE PhoneNumbers (
PhoneNumber VARCHAR(15) UNIQUE
);
INSERT IGNORE INTO PhoneNumbers (PhoneNumber) VALUES
("+8613712345678"),
("13712345678"),
("+86 137 1234 5678"),
("137-1234-5678");
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。