Как замаскировать входящую строку ввода в C # - PullRequest
0 голосов
/ 21 июня 2011

Например:

string maskedString = MaskString("ABCDEFGHIJLK", 2, 3, 'X');

Выход: ABXXXXXXXJLK

string maskedString = MaskString("123456", 2, 3, '*');

Выход: 12*456

string MaskString(string inputString, int leftUnMaskLength, int rightUnMaskLength, char maskCharacter)
{
    //What is the simplest way to code this efficiently in C# .Net 3.5
}

Ответы [ 3 ]

3 голосов
/ 04 июля 2011

Вы можете использовать метод String.Substring, чтобы получить начальную и конечную часть строки, и использовать конструктор String, чтобы построить замаскированную среднюю часть.Тогда вы получите что-то вроде этого:

static string MaskString(string inputString, int leftUnMaskLength, int rightUnMaskLength, char mask)
{
    if ((leftUnMaskLength + rightUnMaskLength) > inputString.Length)
        return inputString;

    return inputString.Substring(0, leftUnMaskLength) +
        new string(mask, inputString.Length - (leftUnMaskLength + rightUnMaskLength)) + 
        inputString.Substring(inputString.Length - rightUnMaskLength);
}
0 голосов
/ 02 июля 2016

Я написал ниже код, который исключает строку и маскирует половину ее содержимого с помощью *.Вы можете изменить этот код, чтобы указать количество символов, которое необходимо замаскировать.

public static string MaskedString(string originalString)
{
    int halfLength;
    string rightString;
    var leftString = new StringBuilder();
    string maskedString;

    if ((originalString == "-") || (string.IsNullOrEmpty(originalString)))
    {
        maskedString = originalString;
    }
    else
    {
        if (originalString.Length % 2 == 0)
        {
            halfLength = originalString.Length / 2;

            for (int i = 1; i <= halfLength; i++)
            {
                leftString.Append('*');
            }
        }
        else
        {
            halfLength = (originalString.Length + 1) / 2;

            for (int i = 1; i < halfLength; i++)
            {
                leftString.Append('*');
            }
        }

        rightString = originalString.Substring(originalString.Length - halfLength);

        maskedString = leftString + rightString;
    }

    return maskedString;
}

Например;

Input - Reyan Chougle
Output - ******Chougle
0 голосов
/ 04 июля 2011

Вот одна реализация:

string MaskString(string inputString, int leftUnMaskLength, int rightUnMaskLength, char maskCharacter)
{
    var output = new List<char>();
    var inputLength = inputString.Length;
    for(var q = 0; q < inputLength; q++) 
    {
          if (q < leftUnMaskLength || q > (inputLength - (rightUnMaskLength + 1)))
          {
              output.Add(inputString[q]);
          }
          else
          {
              output.Add(maskCharacter);
          }
    }
    return new String(output.ToArray());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...