我想隐藏一些像Sha***aj@gmail.com这样的电子邮件中的角色

时间:2014-07-06 06:02:40

标签: c# asp.net

我开发了一个应用程序,它是基于用户的应用程序。在这个应用程序如果用户忘记了他的密码,那么用户只能通过他的电子邮件ID重置他的密码,如果用户不记得他的电子邮件ID与他的帐户相关,那时我想要在社会安全号码中检索密码sha***aj@gmail.com。我怎样才能实现这一点,请帮助我解决这个问题。谢谢。

我从stak over flow获得了这个代码,但它不符合我的要求。仅限电话号码不适用于电子邮件

public static string GetMaskedEmail(string number)
{
    if (String.IsNullOrEmpty(number))
        return string.Empty;

    if (number.Length <= 12)
        return number;

    string last12 = number.Substring(number.Length - 12, 12);
    var maskedChars = new StringBuilder();
    for (int i = 0; i < number.Length - 12; i++)
    {
        maskedChars.Append(number[i] == '-' ? "-" : "#");
    }
    return maskedChars + last12;
}

1 个答案:

答案 0 :(得分:3)

今晚的工作有点慢,所以我解雇了Xamarin Studio并为你鞭打了这个。这不应该被视为最佳编码实践的一个例子,实际上根本不是。

虽然这将提供一个功能性的示例,您可以从中获取并构建自己的方法,并希望在此过程中学习。一个很好的参考资源,如果你在阅读任何代码时完全迷失了,那么MSDN如果你还没有访问过,我会建议这样做并加入书签以备将来使用。

using System;

namespace EmailHash
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            if (args.Length <= 0) 
            {
                Console.WriteLine ("No values were passed to application.");
                return;
            }
            string email = args[0];

            int indexOfAt = email.IndexOf ("@");
            if (indexOfAt == -1) 
            {
                Console.WriteLine("Unable to find '@' symbol within email.");
                return;
            }

            int indexStart = 3;
            int indexEnd = indexOfAt - 2;
            if (indexStart >= indexEnd)
            {
                Console.WriteLine("Not enough characters in email to mask value.");
                return;
            }

            string hashedEmail = email.Replace(email.Substring(indexStart, indexEnd - indexStart), "***");

            Console.WriteLine("Original email: " + email);
            Console.WriteLine("Hashed email: " + hashedEmail);
            return;
        }
    }
}