Windows 窗体
一组用于开发图形用户界面的 .NET Framework 托管库。
118 个问题
关于全球手机号码批量去重,大家有什么好的建议吗?可以告诉我下?
总结了很多知识点,都不是很明白怎么弄的...
用上了很多技术要点,但是都不是很理想。
有人知道的可以告知下 在线等答案!
首先,确保所有手机号码格式一致。这可以包括:
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");
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。