모든 라인이 정수가 있다면, 당신은 단지, Seq.sortBy int
을 사용할 수 있도록 같은 라인의 일부가 유효 정수하지 않을 경우 다음 구문 분석과 검증을 통해 실행해야 할 것,
open System
let readLines filePath = System.IO.File.ReadLines(filePath)
let lines = readLines @"C:\Users\Dan\Desktop\unsorted.txt"
let sorted = lines |> Seq.sortBy int
단계. 예 :
I 단지 int 값을 반환 쓴
tryParseInt
함수 그래서
Seq.sort
대신
Seq.sortBy int
, 그 기능 체인의 출력을 사용하는 것이 주 INT의 서열이 아닌 서열 될 것이다
let tryParseInt s =
match System.Int32.TryParse s with
| true, n -> Some n
| false, _ -> None
let readLines filePath = System.IO.File.ReadLines(filePath)
let lines = readLines @"C:\Users\Dan\Desktop\unsorted.txt"
let sorted = lines |> Seq.choose tryParseInt |> Seq.sort
문자열의. 당신이 정말로 문자열의 순서 만의 int로 해석 될 수있는 유일한 문자열을 원한다면, 당신은 이런 식으로 일을 할 수 :
let tryParseInt s =
match System.Int32.TryParse s with
| true, _ -> Some s
| false, _ -> None
let readLines filePath = System.IO.File.ReadLines(filePath)
let lines = readLines @"C:\Users\Dan\Desktop\unsorted.txt"
let sorted = lines |> Seq.choose tryParseInt |> Seq.sortBy int
주 내가 있도록 tryParseInt
이 버전에서 s
을 반환하고있어 방법 Seq.choose
은 문자열을 유지하지만 (System.Int32.TryParse
을 통해 유효성 검사에 실패한 문자열을 버립니다). 더 많은 가능성이 있지만, 시작하기에 충분할 것입니다.
목록이 아닌 일련입니다. ['Seq.sortBy'] (https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/seq.sortby%5B't,'key%5D-function-%5Bfsharp%5D)를 시도하십시오. – rmunn
그래서'let sorted = lines.Seq.sortBy'와 같이 보일까요? @rmunn – KDOT
아니요. 'Seq.sortBy'는 메소드가 아니라 함수입니다. 그것은'let sorted = Seq.sortBy int lines'이거나,'let sorted = lines |> Seq.sortBy int'입니다. – rmunn