[英]How do I convert integers to characters in C#?
我正在嘗試將1到27的索引轉換為相應的大寫字母。 我知道在C ++中可以輸入以下內容:
char letter = 'A' + (char)(myIndex % 27);
相同的代碼在C#中不起作用。 如何在C#中完成此任務?
編輯:如果有像上面那樣的更好的數學解決方案,我寧願不必為此編碼枚舉或切換語句。
當您添加(或減去)兩個字符時,您將在C#中獲得一個Int32。 這將起作用:
int letter = 'A' + (char)(myIndex % 27);
如果您想要一個字符,則需要再次明確地強制轉換它:
char letter = (char) ('A' + (char)(myIndex % 27));
但是,這實際上很可能應該是:
char letter = (char) ('A' + (char)((myIndex - 1) % 26));
這是一個表驅動的解決方案:
char ToUpperChar(int index)
{
if (index < 1 || index > 26)
throw new ArgumentOutOfRangeException("index");
return "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[index-1]; // took out the % - it's range-checked above.
}
char letter = (char)('A' + (myIndex-1)%26);
(編輯出幻數,調整索引)
在C#中,您必須稍微進行一些轉換:
char letter = (char)('A' + (myIndex % 27));
但是,您的數學也可能是錯誤的,這可能更接近於您實際想要的:
char letter = (char)('A' + ((myIndex - 1) % 26));
擴展方法怎么樣?
public static int Index(this char letter)
{
const int offset = 64;
if(letter >= 'A' && letter <= 'Z')
return (Convert.ToInt32(letter) - offset);
return 0;
}
//用法... char字母='A'; int索引= letter.Index();
這應該工作...
byte upperA = 65;
byte index = 1;
char letter = (char)(upperA + (index % 27));
Console.WriteLine(letter);
我也喜歡里德的回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.