如何将数字转换为其等效的字母字符,并将字母字符转换为字符串中的数字值(0,0应该保持0,原因很明显)
所以基本上如果有一个字符串
string content="D93AK0F5I";
如何将其转换为?
string new_content="4IC11106E9";
答案 0 :(得分:2)
我假设你知道这不可逆,并且你只使用大写和数字。你去......
private string Transpose(string input)
{
StringBuilder result = new StringBuilder();
foreach (var character in input)
{
if (character == '0')
{
result.Append(character);
}
else if (character >= '1' && character <= '9')
{
int offset = character - '1';
char replacement = (char)('A' + offset);
result.Append(replacement);
}
else if (character >= 'A' && character <= 'Z') // I'm assuming upper case only; feel free to duplicate for lower case
{
int offset = character - 'A' + 1;
result.Append(offset);
}
else
{
throw new ApplicationException($"Unexpected character: {character}");
}
}
return result.ToString();
}
答案 1 :(得分:1)
好吧,如果你只需要一个单向翻译,这是一个非常简单的方法,使用linq:
string convert(string input)
{
var chars = "0abcdefghijklmnopqrstuvwxyz";
return string.Join("",
input.Select(
c => char.IsDigit(c) ?
chars[int.Parse(c.ToString())].ToString() :
(chars.IndexOf(char.ToLowerInvariant(c))).ToString())
);
}
答案 2 :(得分:0)
您可以使用Albhabets的ArrayList。例如
ArrayList albhabets = new ArrayList();
albhabets.Add("A");
albhabets.Add("B");
等等。
现在按字符解析字符串。
string s = "1BC34D";
char[] characters = s.ToCharArray();
for (int i = 0; i < characters.Length; i++)
{
if (Char.IsNumber(characters[0]))
{
var index = characters[0];
var stringAlbhabet = albhabets[index];
}
else
{
var digitCharacter = albhabets.IndexOf(characters[0]);
}
}
通过这种方式,您可以获得数字和数字的“字母”表示。 “Alphabet”的数字表示。