Xin lỗi về câu hỏi này, nhưng tôi có một ứng dụng web mà tôi muốn gửi một tệp có khả năng lớn đến máy chủ và phân tích cú pháp định dạng. Tôi đang sử dụng khung Play20 và tôi mới sử dụng Scala.Phân tích cú pháp tệp với BodyParser trong Scala Play20 bằng dòng mới
Ví dụ: nếu tôi có csv, tôi muốn chia từng hàng theo "," và cuối cùng tạo một List[List[String]]
với từng trường.
Hiện tại, tôi đang nghĩ cách tốt nhất để làm điều này là với một BodyParser (nhưng tôi có thể sai). Mã của tôi trông giống như sau:
Iteratee.fold[String, List[List[String]]]() {
(result, chunk) =>
result = chunk.splitByNewLine.splitByDelimiter // Psuedocode
}
câu hỏi đầu tiên của tôi là, làm thế nào để đối phó với một tình huống như hình dưới đây, nơi một đoạn đã được chia ở giữa của một dòng:
Chunk 1:
1,2,3,4\n
5,6
Chunk 2:
7,8\n
9,10,11,12\n
của tôi câu hỏi thứ hai là, viết cho riêng BodyParser của tôi đúng cách để đi về điều này? Có cách nào tốt hơn để phân tích cú pháp tệp này không? Mối quan tâm chính của tôi là tôi muốn cho phép các tệp quá lớn nên tôi có thể xóa bộ đệm tại một số điểm và không giữ toàn bộ tệp trong bộ nhớ.
Mã này trông đầy hứa hẹn nhưng nó sẽ đưa tôi một chút để hiểu ... tất cả các nhà khai thác Scala có cung cấp cho nó một đường cong học tập lớn. –
Tuyệt đối không, bạn có thể viết lại mã trước thay thế><> bằng cách soạn thư, & >> bằng cách biến đổi, | >>> bằng cách chạy. Các toán tử này không phải từ scala mà là các phương thức của các đối tượng tương ứng. – Sadache
À vâng, tôi đã đọc qua các tài liệu trên Enumeratees một lần nữa và điều này có ý nghĩa. Cảm ơn! –