2017-12-19 3 views
-5

사전에 알파벳을 저장해야한다는 요구 사항이 있습니다. 나는 그렇게 할 수있는 아래의 단계를 따라했습니다 :C에서 사전에 알파벳을 저장하는 가장 쉬운 방법 #

static void Main(string[] args) 
{ 
    char[] c = "ABCDFFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(); 
    int key = 1; 
    Dictionary<int, string> dictionary = new Dictionary<int, string>(); 
    foreach (char value in c) 
    { 
     dictionary.Add(key, value.ToString()); 
     key++; 
    } 
} 

내가 먼저 배열하고 사전에 알파벳을 저장하지 않습니다. 내 요구 사항을 구현하는 다른 방법이 있습니까?

+2

은 (AN [XY 문제]처럼 소리 HTTPS : //meta.stackexchange.com/questions/66377/what-is-the-xy-problem). 왜 당신은 사전에 알파벳을 저장해야합니까? 최종 목표는 무엇입니까? – Igor

+4

왜 foreach 앞에 ToCharArray를 사용하는 사람들이 계속 보입니까? 문자열은 이미 문자 시퀀스입니다. 먼저 배열로 변환 할 필요는 없습니다. 이 튜토리얼 또는 뭔가 이것을 말하는거야? 'foreach (ABCDEFG의 char c)' –

+0

사전의 목적이 알파벳의 n 번째 문자를 찾는 것이라면, upper()에'(char) ('A - 1 + n)'을 사용하면된다. -case와'(char) ('a'- 1 + n)'을 사용한다. 사전이 필요하지 않습니다. –

답변

0

이 시도 : 당신이 적절하게 사용할 수 있도록

for(char c = 'A'; c <= 'Z'; c++) { 
    int key = c - 'A' + 1; 
    dictionary.Add(key, c.ToString()); 
} 

샤아는, 실제로는 숫자 타입이다.

0

난 당신이 배열을 사용하지 않으려는 이유는 정확히 모르겠지만,이 ASCII에게

를 사용하여 사용하는 것이 가능 키 65-64과 편지 (char) 65 A의 (1과 동일 것이다) .

실행이 난에 = 90 (Z)

1

문자 및 INT는 상호 ​​교환하고이

사전 사전 = 새로운 사전() 다만 수를 65 ​​(A)를 =로부터;

 for (char c = 'A'; c <= 'Z'; c++) 
      dictionary[c - 64] = c.ToString(); 
0

당신은 사전 개체의 컬렉션 이니셜 라이저를 사용할 수 있습니다

var i = 0; 
var dictionary = new Dictionary<int, string> 
{ 
    {++i, "A"}, 
    {++i, "B" } 
    // etc. 
}; 
0

내가 먼저 배열하고 사전에 알파벳을 저장하지 않습니다.

그런 다음 당신의 사전 초기화 : 당신이 ASCII 동적으로 그것을하고 싶었다면 아마 할 것,

Dictionary<int, string> alphabet= new Dictionary<int, string>() 
{ 
    { 1, "A" }, 
    { 2, "B" }, 
    { 3, "C" } // etc 
}; 

을 :

var values = Enumerable 
    // Returns values 65 to 92 (I think 92) 
    .Range((int)'A', (int)'Z' - (int)'A') 
    // Select that can automatically give me the index of each value 
    .Select((Val, Index) => new { Index, Val }) 
    // Creates a dictionary... 
    .ToDictionary((iv) => iv.Index, (iv) => iv.Val.Tostring()); 
관련 문제