Я пытаюсь сделать две вещи здесь, во-первых, обеспечить псевдолокализацию (не говоря уже о) преобразование для строки, и во-вторых, рандомизировать шанс заменить символ, содержащийся в строке, на основе процентного соотношения, IE: каждый 5% -30% времени ...
Кроме того, в дополнение к этому мне нужно добавить фиксированное число или специальные символы в начале строки, в середине или в конце (в случайном порядке).
Точно так же все знают, это для генератора случайных паролей.
У меня вопрос, как бы я включил упомянутую функциональность в базу кода, с которой я сейчас работаю? еще лучше, как я могу сделать это эффективно?
Спасибо за любую помощь, которую вы можете оказать с этим.
namespace pseudoLocalizer
{
class RegexTuple
{
Regex thisRegex;
string replaceWith;
public RegexTuple(string expression, string replacement)
{
thisRegex = new Regex(expression);
replaceWith = replacement;
}
public string GetReplaceWith()
{
return replaceWith;
}
public Regex GetRegex()
{
return thisRegex;
}
}
class pLocalizeEngine
{
//leet table.
RegexTuple[] arrRegexTuples = {
new RegexTuple ("a", @"@"),
new RegexTuple ("A", @"4"),
new RegexTuple ("b", @"6"),
new RegexTuple ("B", @"8"),
new RegexTuple ("c", @"<"),
new RegexTuple ("C", @"("),
new RegexTuple ("d", @"d"),
new RegexTuple ("D", @"D"),
new RegexTuple ("e", @"3"),
new RegexTuple ("E", @"3"),
new RegexTuple ("f", @"f"),
new RegexTuple ("F", @"F"),
new RegexTuple ("g", @"6"),
new RegexTuple ("G", @"9"),
new RegexTuple ("h", @"#"),
new RegexTuple ("H", @"#"),
new RegexTuple ("i", @"!"),
new RegexTuple ("I", @"1"),
new RegexTuple ("j", @"j"),
new RegexTuple ("J", @"J"),
new RegexTuple ("k", @"k"),
new RegexTuple ("K", @"K"),
new RegexTuple ("l", @"1"),
new RegexTuple ("L", @"7"),
new RegexTuple ("m", @"m"),
new RegexTuple ("M", @"M"),
new RegexTuple ("n", @"~"),
new RegexTuple ("N", @"N"),
new RegexTuple ("o", @"0"),
new RegexTuple ("O", @"0"),
new RegexTuple ("p", @"p"),
new RegexTuple ("P", @"P"),
new RegexTuple ("q", @"q"),
new RegexTuple ("Q", @"Q"),
new RegexTuple ("r", @"2"),
new RegexTuple ("R", @"2"),
new RegexTuple ("s", @"$"),
new RegexTuple ("S", @"5"),
new RegexTuple ("t", @"+"),
new RegexTuple ("T", @"7"),
new RegexTuple ("u", @"u"),
new RegexTuple ("U", @"U"),
new RegexTuple ("v", @"v"),
new RegexTuple ("V", @"V"),
new RegexTuple ("w", @"w"),
new RegexTuple ("W", @"W"),
new RegexTuple ("x", @"x"),
new RegexTuple ("X", @"X"),
new RegexTuple ("y", @"y"),
new RegexTuple ("Y", @"Y"),
new RegexTuple ("z", @"2"),
new RegexTuple ("Z", @"2"),
};
public pLocalizeEngine()
{
//
}
public string Localize(string oldString)
{
string pLocalString = oldString;
foreach (RegexTuple tuple in arrRegexTuples)
{
pLocalString = tuple.GetRegex().Replace(pLocalString, tuple.GetReplaceWith());
}
return pLocalString;
}
}