2016-04-28 25 views
3

是否有可能获得没有评论(单个&多行)的ACE编辑器实例的价值?注释由span类“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:对于''/ *删除\ nthis multine \ ncomment */RETURN 1“'失败。是否有可能解决这个问题,并且还支持未封闭的多行注释(即匹配'* /'或输入结束)? – CoDEmanX

+0

更新了答案,使用'[\ s \ S] *?'而不是'。*?' – jcubic

0

更简单的解决方案将是。刚刚修剪//评论这样

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

对不起,我还不够清楚,我需要检测单行注释和多行注释以及全行评论,并cuttet评论如: * /这是一个评论*/console.log(“这不是一个评论”)//再次评论 – hkernbach

+1

我明白了jcubic的'答案是你所需要的:) –

相关问题