2013-07-01 4 views
0

친구와 내가 만들고있는 게임의 실행 프로그램을 만들고 있습니다.
은 내가
오른쪽 지금은 파일이 밖으로 lay'ed 한 다운로드해야 어떤 새로운 파일을 얻을 매니페스트 업데이트를 읽기 위해 노력하고 있지만은 그것을 파일의매니페스트에서 데이터를 추출하고 데이터를 사용하여 업데이트합니다.

라인을 읽는 방법을 모르는 이 MD5는 다음 d41d8cd98f00b204e9800998ecf8427e 포함됩니다 checksum.md5처럼 파일처럼 * 내가

thearray.replace(" ", "").split('*'); 

와 2 개 개의 별도 목록으로 퍼팅 try'ed있다 그러나 그것은 매우 리터입니다 난처한 상황에 빠진 apples.txt

중후하게 그리고 나는 이것을 위해 이렇게 긴 코드가 필요해 보이지 않는다. 나는 파일의 라인에서 현재 디렉토리에서 읽을 파일이 필요하다. (내가 어떻게 분할/정리할 수 있다면 이럴 수있다.)

바로 지금 내가 뭘하려고하지만 왜곡 당했다. .

var main = new frmMain(); 
if (File.Exists("checksums.md5")) { File.Delete("checksums.md5"); } 
main.Download(updateurl + "checksums.md5", "checksums.md5"); 
string[] checksumfile = System.IO.File.ReadAllText("checksums.md5").Replace(" ", "").Split('*'); 

나는 이것이 내가 원하는 방식으로 작동하도록하기 위해 지금 무엇을해야합니까? 있습니다 .. checksum.md5 모든 파일을 확인하고 나중에 업데이트 할 목록에 업데이트 필요 파일을 넣어 ..

checksum.md5에있는 파일의 경로가 이와 비슷할 것입니다 (명확하게 설명하지는 않습니다).
웹 사이트에 d41d8cd98f00b204e9800998ecf8427e * 폴더 \의 apples.txt
파일이 updateURL에서/파일/폴더에있을 것입니다/apples.txt
클라이언트를 /에있을 것입니다 파일을 발사기. \ 폴더 \의 apples.txt

읽어 주셔서 감사합니다! http://www.regular-expressions.info/repeat.html

그것은 텍스트를 조작하기위한 매우 유용한 도구입니다 : 나는

public static string updateurl = "http://localhost/files/"; 

답변

0

확인이 아웃 .. 사용하기에 물건을 그냥 생각이 날 난처한 상황에 빠진, 같은 기본적인 일을하는 방법을 알고있다.

파일은 다음과 같이 경우

[체크] [공간] * [파일 경로] [라인의 끝]

라인의

[체크] [공간] * [파일 경로] [끝 ]

[checksum] [space] * [filepath] [end of line] . . .

이 패턴은 작동합니다 :

string pattern = @"(?<= [*])[^\r\n]*"; 

    var matches = Regex.Matches(@sourceString, @pattern); 
    foreach (Match m in matches) 
    { 
     Console.Writeline(m.Value); 
    } 

정규식 클래스는 훨씬 더 유연 문자열보다 바꾸기 방법이있다.교체

편집

이 도움이 아니면 내가 완전히 잘못 이해하면 다시 데이터를 구성하는 방법을 몇 가지 아이디어 :) 경우 나도 몰라 :

List<FileData> result = (from a in Regex.Split(s, @"\r\n").Cast<string>().Select(a => Regex.Split(a, @" [*]")) 
         select new FileData 
         { 
          Checksum= a[0], 
          Filepath = a[1], 
          ShouldUpdate = FileData.CheckShouldUpdate(a[0],a[1]) 
         }).ToList(); 

나 :

List<FileData> result = (from a in Regex.Split(s, @"\r\n").Cast<string>().Select(a => Regex.Split(a, @" [*]")) 
         where FileData.CheckShouldUpdate(a[0], a[1]) 
         select new FileData 
         { 
          Checksum = a[0], 
          Filepath = a[1] 
         }).ToList(); 

...

class FileData 
     { 
      public string Checksum { get; set; } 
      public string Filepath { get; set; } 
      public bool ShouldUpdate { get; set; } 
      public FileData() { } 
      public static bool CheckShouldUpdate(string checksum, string filename) 
      { 
       // some check logic here... 
       return true; 
      } 

     } 
+0

감사합니다. 너는 나를 도왔고, 나는 영원히 감사한다. –

+0

내가 설정 한 후 한 번의 오류가 발생했습니다. 색인은 배열의 경계를 벗어났습니다. 이것은 | 목록 결과 –

+0

^편집 : 파일에 공간이 있습니다. 완벽하게 작동합니다! 고맙습니다! –

관련 문제