2016-06-03 1 views
2

저는 C#에서 작업중인 프로그램과 관련된 빠른 질문을 가지고 있습니다. 이 같은 숫자의 긴 목록, 텍스트 파일이 있습니다문자열 배열을 텍스트 파일에서 double 배열로 변환 할 때 오류 메시지가 발생했습니다.

41.673993158 0.000000000 258.436256 

41.673992499 -0.000001364 258.462068 

41.673991841 -0.000002700 258.487880 

을 그리고 더블 별도로 각 번호를 포함하는 배열을 생성 (또는 float) 할 필요가있다. 즉

Array[0] = 41.673993158 

Array[1] = 0.000000000 ...etc.] 

는 지금, 나는 배열의 번호를 가지고 있지만 모든 문자열입니다. 나는 다음 코드를 가지고있다 :

string text = System.IO.File.ReadAllText("/Applications/Unity/Projects/Underwater/SampleFile.txt"); 
if (text != null) 
{ 

    string[] strings = text.Split (' '); 

    System.Console.WriteLine("Contents of SampleFile = "); 
    for (int i = 0; i < strings.Length; i++) 
    { 
     Console.WriteLine (strings[i]); 
    } 
    } 

이 코드는 완벽하게 작동한다. 그것은 콘솔에서 별도의 줄에 각 번호를 출력, 각 번호는 배열에 자신의 장소가 있다고 생각하게됩니다. 그러나, 그들은 모두 여전히 문자열, 그래서 나는이 코드를 사용하여 더블로 변환하려고하면

double[] nums = new double[strings.Length]; 
for (int i = 0; i < strings.Length; i++) 
{ 
    nums[i] = Convert.ToDouble(strings[i]); 
}  

나는 예외 오류를 던져, 그리고 왜 알아낼 수 없습니다. 다음은 오류 메시지입니다.

System.FormatException이 발생했습니다.

알 수없는 숯불

세부 사항 : double.Parse (들 = "258.436256 \ 연구 \ n41.673992499"제공 = {EN-CA})

System.Convert.ToDouble (값 = " 258.436256 \ 연구 \의 n41.673992499 ")

내가 지금 어떤 도움을 크게 감사합니다, 두 배의 배열을 때까지 내 프로그램에 이동할 수 없습니다!

+0

나는 많은 시간을 가지지 않는다. 그 이유는 대답이 없다. 개인적으로 나는 문자열 배열에서 항목을 가져 오는 foreach 루프를 만들고, 그 항목을 double로 변환 한 다음 새로운 double에 추가한다. 배열 ... 이것은 길어지는 솔루션이지만 작동해야합니다 ... 더 짧고 더 효율적인 경우 다른 솔루션을 찾으십시오. – Brendon

답변

7

캐리지 리턴으로 구분 된 두 개의 숫자를 한 번에 구문 분석하려고한다는 예외 메시지에서 확인할 수 있습니다.

줄 바꿈을 사용하지 않고 공백으로 나눕니다. 그러나 이것을 콘솔에 쓰면 으로 보입니다.

var nums = text 
    .Split(new[] {" ", "\r\n"}, StringSplitOptions.RemoveEmptyEntries) 
    .Select(double.Parse) 
    .ToArray(); 

:이 훨씬 terser 솔루션입니다 -

text.Split(new[] {" ", "\r\n"}, StringSplitOptions.RemoveEmptyEntries); 

심지어 구문 분석하고 배열을 만들기 위해 몇 가지 LINQ와 결합 할 수는 :

공간과 CRLF를 모두 포함하도록 분할을 변경

작동중인 데모는 this fiddle을 참조하십시오.

+1

그래서 줄 간격으로 나누고 공간별로 나누는 방법이 있습니까? – KatrinaMay14

+0

@ KatrinaMay14가 하나의 옵션을 포함하도록 업데이트되었습니다. –

+0

예! 그것은 완벽하게 작동했습니다. 정말 고마워!! – KatrinaMay14

관련 문제