1

エディターを作成し、フォーマットされたテキストをデータベースに保存したいと思います。サンプルエディターだけでStackOverFlowエディターのような機能を実行したい:

_sfdfdgdfgfg_ :下線付きテキストの場合

/sfdfdgdfgfg/ :太字のテキストの場合

_関数を使用して、最初の関数を<b>2番目の関数に置き換え</b>ます(それぞれ/)。

だから私の質問は、最後と最後を検出する方法_/、それらがネストされているかどうかです。

例えば ​​:

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

このエディタをJavaアプリケーションで使用します。

4

4 に答える 4

5

したがって、必要なのはJavaバージョンのマークダウンです。

Googleが見つけたものは次のとおりです。

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

于 2011-03-21T13:26:23.050 に答える
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, "/">,

開始と終了は、ブール変数をネストする意味がないため、ブール変数を使用してかなり簡単に追跡できます。そのため、私はすでにトークナイザーでその追跡を行っています。

その後、これらのトークンを受け取り、それに応じてテキストエリアへの出力を構成するパーサークラスを作成します。

ご覧のとおり、これは実際には原則の単なる適用ですdivide and conquer。のタスクはHow do I do everything I want with my text?3つの部分に分かれています。

  1. 便利な構造によると、この文字列は何についてですか?(Tokenizerからの回答)
  2. x可能な限り特定のテキストパーツを処理するにはどうすればよいxですか?(パーサーからの回答)
  3. この文字列のパーサー解釈をどのように表現しますか?(JTextpaneなどからの回答)

TokenizerとParserの両方が追加のクラスである必要はありません。コンテキストは複雑ではないため、好みのTextareaタイプの拡張クラスのメソッドにすることができます。

より詳細なアドバイスを与えることは役に立たないと思います。次の最善のステップは、おそらく自分でやりたいと思う実装でしょう。ただし、特定の1つの部分に対する適切な解決策が見つからない場合は、遠慮なく質問してください。

于 2011-03-21T13:46:07.380 に答える
1

あなたはstackoverflow.comページソースを見て、統合しようとすることができます...私はそれがうまくいくはずだと思います...

https://blog.stackoverflow.com/2008/12/reverse-engineering-the-wmd-editor/

于 2011-03-21T13:38:46.210 に答える
0

これは、MarkDownJの使用方法を示す例です。

まず、MarkdownJがJavaアプリケーションで呼び出されるクラスライブラリであることを確認します。

次に、このコードを使用してMarkdownJを呼び出します。

MarkdownProcessor m = new MarkdownProcessor(); 

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

System.out.print("<html>"+html+"</html>");
于 2011-03-24T21:14:25.880 に答える