2016-04-28 6 views
3

Возможно ли получить значение экземпляра редактора ace без комментариев (один & несколько строк)? Комментарии идентифицируются классом span 'ace_comment', но единственной функцией, которую я нашел для извлечения данных, является getValue().Как получить значение из редактора ACE без комментариев?

Easy Пример:

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

Что я получаю: Вывод: 'console.log ("Hello World") // Это комментарий'

Что я хочу: Вывод: 'console.log ("Hello World")'

Расширенная Пример (Multi-строка + '//' и '/ * * /' комментарии):

*/Это комментарий */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

Простым решением будет. Чтобы просто обрезать // Комментарий как этот

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>';

Делая это, вы spliting на всю строку расколом «//» возвращает массив, который будет иметь [0] = console.log ('HelloWorld'); и [1] = 'Комментарий вроде этого'. Это самое простое решение, о котором я могу думать. jcubic. В основном делает то же самое, используя регулярное выражение. Хороший взгляд!

+0

Извините, но я не был достаточно ясен, мне нужно обнаружить комментарии с одной строкой, а также многострочные комментарии а также комментарии к полной строке и комментарии к cuttet, например, например: */Это комментарий */console.log («это не комментарий») // комментарий снова – hkernbach

+1

Я вижу, что ответ «jcubic» - это то, что вам нужно :) –

 Смежные вопросы

  • Нет связанных вопросов^_^