2014-11-17 6 views
-1

문자열의 '['를 (를) 가져 오는 코드가 있습니다. 그런 다음이 예제에서 '9'라고 가정 할 문자열의 다음 문자에서 정수를 만듭니다. 그러나 value은 57로 설정됩니까?문자열 [인덱스]가 작동하지 않습니다.

string text = "Red Onyx : Text 1 - [9]"; 

int index = text.IndexOf("["); 
int value = Convert.ToInt16(text[index+1]); 

난 그냥 텍스트 [인덱스] 텍스트 [인덱스 -1], 및 텍스트 [인덱스 +2]

+1

http://www.asciitable.com/ 57 (정수)는 ASCII 값 "9"입니다. "9"는 정수가 아닌 숫자입니다. – Plutonix

답변

4

text[index+1] 당신에게 문자를 반환하고 Int16로 변환하는 것은 그 ASCII를 반환합니다을하고 시도 값은 9에 대해 57입니다.

int value = (int) char.GetNumericValue(text[index + 1]); 

또는 같은 문자열과 인덱스 소요 char.GetNumericValue의 두 번째 오버로드를 사용 :

당신은 char.GetNumericValue 사용할 수 있습니다

int value = Convert.ToInt16(text[index + 1] +""); //explicitly make it string "9" 
                //or simpler text[index + 1].ToString() 

이 또한 필요가 없습니다

int value = (int) char.GetNumericValue(text,index + 1); 

또는

을에 결과를 저장하려는 경우 Convert.ToInt16을 사용하십시오.또는 int

+0

+1. 나는 이것을 타이핑하는 중이었다. 너는 나보다 빠르다. 또한 Convert.ToInt16 (text.SubString (index + 1,1)) 또는 Convert.ToInt16 (text [index + 1] .ToString())을 수행 할 수도 있습니다. – Nick

관련 문제