簡體   English   中英

如何在C#中將整數轉換為字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM