あなたが持っている別の選択肢は、あなたが望む順序に従う組み込みのcharacter
/タイプに頼ることです。integer
追加の考慮事項: キャップを考慮すると、キャップが配信されます (「A」の後の「B」と「a」の後の「b」)。心配する必要があるのは、反復が AZ/0-9 境界に制限されるようにすることだけです。サンプルコード:
public string moveChar(string inputChar, int noPos)
{
string outChar = checkBoundaries(inputChar, noPos);
if (outChar == "")
{
outChar = basicConversion(inputChar, noPos);
}
return outChar;
}
public string basicConversion(string inputChar, int noPos)
{
return Convert.ToString(Convert.ToChar(Convert.ToInt32(Convert.ToChar(inputChar)) + noPos));
}
public string checkBoundaries(string inputChar, int noPos)
{
string outString = "";
int count1 = 0;
do
{
count1 = count1 + 1;
string curTemp = basicConversion(inputChar, 1);
if (inputChar.ToLower() == "z" || curTemp.ToLower() == "z")
{
if (inputChar.ToLower() != "z")
{
noPos = noPos - count1;
}
inputChar = "a";
outString = "a";
if (inputChar == "Z" || curTemp == "Z")
{
inputChar = "A";
outString = "A";
}
count1 = 1;
}
else if (inputChar == "9" || curTemp == "9")
{
if (inputChar != "9")
{
noPos = noPos - count1;
}
inputChar = "0";
outString = "0";
count1 = 1;
}
else
{
inputChar = curTemp;
outString = inputChar;
}
} while (count1 < noPos);
return outString;
}
文字列 (呼び出しごとに 1 文字 (文字または数字) のみ) を想定しており、次を使用して簡単に呼び出すことができますmoveChar("current letter or number", no_of_pos_to_move)
。このバージョンは「ポジティブ」/「フォワード」の動きだけを説明していますが、逆の状況を説明するために簡単に編集できます.