2009-12-08 3 views
1

Java에서는 정수, 부동 소수점과 같은 데이터 구조에 특정 형식의 문자열과 스트림을 읽기위한 Scanner라는 멋진 클래스가 있습니다. Is 거기에 Mono에 상응하는 것들이 있습니까? .Net에는 바이너리 리더가 있지만 데이터를 바이너리로 읽습니다. 문자열에서 파싱하여 데이터를 읽는 클래스가 필요합니다.Java의 Scanner 클래스에 해당하는 모노 (.Net)가 있습니까

편집 : 현재 답변에 대한 반응, 데이터 형식의 대부분은 구문 분석 방법을 알고 있지만 이러한 문제는 문자열을 순차적으로 읽지 않습니다. Java에서는 단순히 객체를 초기화하고 메서드를 활성화하면 순차적으로 데이터 유형을 읽습니다.

+0

내가 아는 것은 없지만 비슷한 수업을 직접 노크하는 것은 어렵지 않습니다. – LukeH

+0

당신은 어떤 종류의 스트림을 읽고 있습니까? 파일? – CuppM

+0

사실, 테스트 케이스에 대한 데이터가 들어있는 파일 –

답변

2

글쎄, 난 당신이 데이터의 정확한 형식이 오는 알고 있다고 가정거야 방법이 필요 구문 분석 할 수 있습니다. 자바의 Parser 클래스를 살펴보면 매우 복잡하거나 훨씬 더 편리한 클래스로 보입니다. 공백에 스트림 문자열을 토큰 화하고 토큰을 가져 와서 파싱하는 기능을 제공합니다. 그리고 내가 아는 한 .Net에는 동등한 클래스가 없습니다. 따라서 재사용을 원하면 직접 작성해야합니다.

그러나 필요한 기본 알고리즘은 파일 내용을 읽고 토큰을 분할하고 파싱하는 것입니다. 파일 크기가 적당한 경우 File.ReadAllLines()을 사용하여 파일 내용을 행 단위로 String[]으로 읽을 수 있습니다. 또는 클래스를 사용하여 ReadLine()을 사용하여 한 번에 하나씩 행을 읽을 수 있습니다. 그런 다음 한 줄에 입력하면 StringSplit()으로 토큰 화 한 다음 구문 분석합니다.

정확하게 당신이 파일의 값을 사용해야하는 방법을 아는 아니, 아주 기본적인 패턴이 될 수있다 :

// Read in the whole file 
String[] strLines = File.ReadAllLines(strFilePath); 

// Loop through each of the lines to process their contents 
foreach (String strLine in strLines) { 
    // Tokenize on the spaces 
    String[] strTokens = strLine.Split(' '); 

    // Parse the values 
    int iIntValue = Int.Parse(strTokens[0]); 
    double dDoubleValue = Double.Parse(strTokens[1]); 

    // Do something with the values 
} 

자신의 Parser 클래스를 작성하면 당신과 같은 상태 및 자동 사전 토큰을 유지할 수 있도록 할 그것을 써. 해당 경로로 이동하면 StreamReader이 가장 좋은 옵션 일 수 있습니다.

1

대부분의 기본 데이터 형식에는 .Parse.TryParse() 메쏘드가 있습니다.

예 : Int32.TryParse 방법.

1

.NET에서 많은 유형의 String 매개 변수를 사용하는 정적 .Parse().TryParse() 메서드가 있습니다.

당신은 같은 것을 할 수있는 : 당신은 테스트 케이스에있는 파일을 읽기 때문에,

Stream s = new Stream(); 
// Wire up the stream. 

StreamReader reader = new StreamReader(s); 
String value = reader.ReadToEnd(); 

int valueAsInt = Int32.TryParse(value); 
관련 문제