2016-04-28 10 views
3

コメントなしでエースエディタインスタンスの値を取得することは可能ですか(単一&複数行)?コメントはスパンクラス 'ace_comment'によって識別されますが、データを抽出するために私が見つけた唯一の関数はgetValue()です。私は何を得るコメントなしでACEエディタから値を取得するにはどうすればよいですか?

console.log("Hello World") //This is a comment. 

: 出力:

簡単例 'はconsole.log( "Hello World" の)//これはコメントです'私が欲しいもの

: 出力: 'はconsole.log( "Hello World" の)'

拡張例(複数行+ '//' と '/ * * /のコメント):

* /これは、あなたがコメントを削除する正規表現を使用することができます コメント* /はconsole.log( "これはコメントではありません")//コメント再び

答えて

3

です:

var string = 'console.log("Hello World") //This is a comment. \n' + 
 
      'hello("foo"); /* This is also a comment. */'; 
 
string = string.replace(/\s*\/\/.*\n/g, '\n').replace(/\s*\/\*[\s\S]*?\*\//g, ''); 
 
document.body.innerHTML = '<pre>' + string + '</pre>';

+0

ありがとうございます!私は、ソリューションが構築されることを期待していましたが、これはうまくいくようです。 – hkernbach

+0

@jcubic: '/ * remove \ nthis multine \ ncomment */RETURN 1" 'に失敗します。これを修正し、非閉じの複数行のコメントをサポートすることができますか?(つまり、 '* /'または入力の終わりにマッチする)? – CoDEmanX

+0

答えが更新されました。 '。*?'の代わりに '[\ s \ S] *?'を使います。 – jcubic

0

より単純な解決策があります。ちょうどあなたが「//」の分割によって文字列全体をsplitingしている。これにより、この

var str = 'console.log("HelloWorld")//This is a comment'; 
 
     str = str.split('//'); 
 

 
    //Just to print out 
 
    document.body.innerHTML = '<pre>You provide > '+ str[0]+'//'+str[1] +'</pre><pre>Output > ' + str[0] + '</pre>';

などの//コメントをトリミングするには必要があります配列を返す[0] = console.log( 'HelloWorld'); [1] = 'このようなコメント'。これは私が考えることができる最も簡単な解決策です。 jcubic。基本的に正規表現を使って同じことをしています。良い見!

+0

申し訳ありませんが、私は十分に明確ではありませんでした。 * /これはコメント*/console.log( "これはコメントではありません")//もう一度コメントしてください – hkernbach

+1

私はよくjcubicの '答えはあなたが必要としているものを参照してください:) –

関連する問題