星期三, 7月 08, 2009

漫談 String Processing

String Processing 方法其實不少,剛好最近有學到,寫出來筆記一下。

C 的 string 其實是 char* 這點是非常顯而易見,若要說為什麼,不在這裡的討論範圍內,不過 C 的 string processing 幾乎是我所認為的基礎,就我所遇到的 programming language ,至少都有 C String library 所提供的功能(當然,大部分來的更多),所以要認識 function 背後所帶來的成本,學 C Standard Library 是一個不錯的選擇。

一般常見的處理方法如下:

  • naive method:
    我想這沒有什麼好解釋的 ... XD
  • Use library provided by programming language:
    其實以 Java, Python 而言,sting's function 可以解決大部分的常見問題,C++ 也可以,只是在操作上沒有這麼直覺(C++ Boost string algo 提供了不少好東西,也可以參考。)。
  • Consider a string as input/ output:
    • C: sscanf/ sprintf
    • C++: istringstream/ ostringstream
    • Java: StringReader/ StringWriter
    • 簡單的來說,就跟操作 scanf 一樣,所以 scanf 有的優點這個方法都有,缺點亦然,但是對於單一格式的字串處理,如果要轉換成 int, double 之類的,算是比較快速的一個選擇。
  • Regular Expression:
    C, C++, Java, Python 皆有相對應的 library 可供使用,這一招的用途非常的廣,通常也接近最後一招了,不過還是有死角,不建議使用 Regular Expression 在 XML 類的文件上。
  • Parser:
    通常就會針對特定文件了,例如說就有 XML parser, HTML paerser,使用這類的 parser 來處理相關格式會有事半功倍的效果。
目前想到的方法大概為這些,做個筆記,歡迎指正或補完哩。


---
想起來很多,寫起來很少 XD

張貼留言