2011-03-21 71 views
1

我想在數據庫中創建編輯器並存儲格式化文本。我想只是一個樣本編輯器做類似計算器的編輯功能:示例編輯器 - 與stackOverflow相同

_sfdfdgdfgfg_:下劃線文本

/sfdfdgdfgfg/:爲黑體字

我將使用功能通過<b>和第二,以取代第一_</b>(分別適用於/)。

所以我的問題是如何才能檢測結束和最後_/如果它們嵌套?

例如:

/dsdfdfffddf _ dsdsdssd_/ ffdfddsgds /dfdfehgiuyhbf/ .... 

我將使用Java應用程序這個編輯器。

+0

肖恩指出,SO使用標記。我建議你*重新使用*格式**和**執行它,因爲有很多令人討厭的角落案例可能會引入微妙和難以修復的錯誤。 – 2011-03-21 13:27:19

回答

5

所以你想要的是一個Java版本markdown

下面是谷歌發現:

http://code.google.com/p/markdownj/

+0

那麼我可以在Java類中調用Markdown.pl嗎?我認爲這是可能的,但pl文件需要一些改變? – alibenmessaoud 2011-03-21 13:52:34

+1

@alibm不,從谷歌代碼項目下載Java版本 – 2011-03-21 14:24:25

2

它不會讓你開心,但你應該花時間學習編寫解析器(龍書很好)。解析器任務的事情是,如果你知道如何去做,那麼它們很容易,如果你不知道它們幾乎是不可能的。 我會寫一個標記器,它可以識別令牌,如<start_underline, "_"><end_underline, "_">,用於在編輯器中使用的格式指示器和其他所有格式指示器。結果可能是這樣的:

文字:Hello _world_, /how are you?/

令牌:<text, "Hello ">,<start_underline, "_">,<text, "world">,<end_underline, "_">,<text, ", ">,<start_bold, "/">,<text, "how are you?">,<end_bold, "/">,

的開始和結束,可以跟蹤與布爾變量相當容易,因爲它是沒有意義的巢他們。這就是爲什麼我會在tokenizer中進行跟蹤。

之後,我會編寫一個解析器類,它接受這些標記並相應地將輸出配置爲textarea。

你看,這實際上只是應用了原理divide and conquerHow do I do everything I want with my text?的任務分爲3個部分:

  1. 根據一個有用的結構,這個字符串是什麼? (Tokenizer答覆)
  2. 如何處理特定文本部分x所有可能的x? (解析器解答)
  3. 如何表示該字符串的解析器解釋?(JTextpane或其他人的答覆)

Tokenizer和Parser都不需要額外的類。因爲上下文並不複雜,所以它們只能是您喜歡的Textarea類型的擴展類中的方法。

給出更詳細的建議是沒有幫助的我認爲,下一步最好的步驟是您可能最好自己做的實現。儘管如此,請不要猶豫,詢問您是否找不到某個特定部件的良好解決方案。

+0

+1提龍書 – 2011-03-21 14:24:43

0

這是一個例子說明如何使用MarkDownJ:

首先,確保MarkdownJ是在Java應用程序調用的類庫。

其次,使用該代碼來調用MarkdownJ:

MarkdownProcessor m = new MarkdownProcessor(); 

String html = m.markdown("this is *a sample text*"); 

System.out.print("<html>"+html+"</html>");