2014-09-29 5 views
2

텍스트 파일을 읽고 특정 열의 특정 값만 포함하는 줄을 필터링하고 싶습니다. 따라서 "1 행 2 열에"Bob "또는"Tom "또는"Fred "가 포함 된 경우 그 행을 반환하면 각 행의 두 번째 요소가 Bob, Tom 또는 Fred 인 행만 포함됩니다 ..스칼라 : 텍스트 파일을 읽고 값 목록을 필터링하십시오.

그것은이 일 것이라고 생각 :

val trans = io.Source.fromFile(inputFile).getLines.map(x => x.split("\11")).filter(line =>("Bob", "Tom", "Fred").contains.line(2)).toArray 

하지만보고 후, 정말 작동 것이다 (그리고 아무튼; t)하는 것이 이해가되지 않습니다이 같은 하나의 값으로 할 수 있습니다. :.

val trans = io.Source.fromFile(inputFile).getLines.map(x => x.split("\11")).filter(line =>line(2) contains "Bob").toArray 

하지만 여러 값을 어떻게 알아낼 수 없습니다

도움을 주시면 감사하겠습니다.

답변

3

검사 할 여부 라인-A이 시퀀스 문자열의에 포함 -is 단일 문자열 중 하나 열 :

val names = Seq("Bob", "Tom", "Fred") 

그런 다음 filter 전화가

...filter(line => names.contains(line(2))) 
+0

감사하게 . 나는 내가 가까이에 있었지만 꽤 거기에 없었다고 생각한다. 조금 더 많은 정보를 얻으려면 왜 (line (2))가 포함되어 있지만 contains.line (2)가 포함되어 있지 않은지에 대한 정보를 얻을 수 있습니까? –

+0

메소드는'contains (elem : A)'입니다. 괄호를 생략하고 마침표를 쓸 수는 없으며 이는 단지 불법적 인 구문입니다. 허용되는 것은 _infix 표기법입니다 :'filter (line => names contains line (2))' –

관련 문제