1
A
回答
3
這很簡單。您可以計算您要查找的最長模式,然後按照該數量回溯文件指針,或者滾動文件,只讀取增量。
想象一下最長的模式是26個字節。
- 閱讀1k。
- 檢查所有模式 - >無。
- 從緩衝區中刪除1k - 26個字節。
- 閱讀1000 - 從物流26個字節,並添加到您的緩衝區
- 轉到2.
編輯:讓我澄清一下:有兩種方法可以做到這一點,兩者各有優劣。我上面記錄的一個最適合用於從流中讀取數據,這意味着不支持查找的數據源。但是,如果您的數據源確實支持尋找(如文件系統文件),那麼您可以輕鬆地使用搜索。檢查圖案,如果找不到,請回溯最長圖案的尺寸,然後從那裏開始。
但是,如果您希望支持搜索長度超過緩衝區大小的模式,則可能需要更聰明的算法。您需要一個包含當前「打開」的所有模式的查閱表,以便讀取更多數據,這反過來會花費更多的內存 - 您會遇到問題。
1
你可以看看CharBuffer
,這只是這個目的
2
這就是Scanner類是什麼實現CharSequence
。
0
爲什麼不使用SAX parser。它是建立處理大型文件的標記。如果您嘗試在同一級別的不同元素上進行匹配,您會遇到問題。然而,這不是不可能處理
相關問題
- 1. Python在字符串中查找模式
- 2. 在字符串中查找模式PHP
- 3. jQuery查找字符串中的模式
- 4. 查找字符串中的模式linux
- 5. 在字符串C#查找模式
- 6. 查找最長字符串的長度
- 7. 如何在字符串表達式中查找字符串模式Java?
- 8. 查找NSArray中的最長字符串
- 9. 在Java中查找特定長度/格式的子字符串
- 10. 查找字符串的模式
- 11. 使用grep查找字符串模式
- 12. 如何從長字符串中查找子字符串(0,91)?
- 13. 查找字符串中所有子字符串的長度
- 14. 查找字符串中最長的重複子字符串?
- 15. 查找字符串數組中最長的字符串
- 16. 在字符串中查找字符串
- 17. 在字符串中查找字符串
- 18. 如何在一組文件中查找字符串和字符串模式?
- 19. 在C#中查找字符串中的所有模式索引#
- 20. 在Lua中查找指定字符串中的模式
- 21. 在Python中查找字符串中的模式
- 22. 在Python中查找字符串中的模式
- 23. 如何在Python中查找字符串中的模式/組合?
- 24. C - 在格式化字符串中查找子字符串
- 25. 正則表達式在字符串中查找字符串
- 26. 在Python中以字符串的數字順序查找最長的字符串
- 27. 查找multiplicy長度的字符串
- 28. 查找字符串的長度
- 29. 在文本中查找字符串的特定模式
- 30. 在數組中查找特定的字符串模式jquery
讓我們只希望他的長度最長的字符串不是1k-1 :) – 2011-01-19 15:14:20
好主意,但它只適用於,如果他搜索確切的字符。如果模式 - 一些html標籤之間的所有內容。它的長度是不可預測的。 – 2011-01-19 15:14:46