簡體   English   中英

在ByteString上拆分ByteString(而不是Word8或Char)

[英]Split ByteString on a ByteString (instead of a Word8 or Char)

我知道我已經有了Haskell Data.ByteString.Lazy函數,可以在單個字符上分割CSV,例如:

split :: Word8 -> ByteString -> [ByteString]

但是我想在一個多字符的ByteString上拆分(就像在一個String而不是一個Char上拆分):

split :: ByteString -> ByteString -> [ByteString]

我需要解析類似csv的文本文件中的多個字符分隔符,並且各個字符本身會出現在某些字段中,因此僅選擇一個分隔符並丟棄其他分隔符會污染數據導入。

我對如何執行此操作有一些想法,但是它們似乎有些怪異(例如,使用三個Word8,測試它們是否是分隔符組合,如果是,請啟動一個新字段,再遞歸),我想我會無論如何都要重新發明輪子。 有沒有辦法從頭開始重建功能的方法?

字節串中有一些函數可用於拆分子序列:

breakSubstring :: ByteString -> ByteString -> (ByteString,ByteString)

還有一個

Bytestrings breakSubstring的文檔包含一個功能,該功能可滿足您的要求:

tokenise x y = h : if null t then [] else tokenise x (drop (length x) t)
    where (h,t) = breakSubstring x y

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM