Вычеркните C-стиль Многострочные Комментарии - PullRequest
3 голосов
/ 29 марта 2010

У меня есть строковый объект C #, который содержит код универсального метода, которому предшествуют некоторые стандартные многострочные комментарии в стиле C.

Я подумал, что мог бы использовать System.Text.RegularExpressions, чтобы удалить блок комментария, но, похоже, я смог заставить его работать.

Я пытался:

code = Regex.Replace(code,@"/\*.*?\*/","");

Можно ли указывать в правильном направлении?

Ответы [ 4 ]

3 голосов
/ 29 марта 2010

Вы используете обратную косую черту для экранирования * в регулярном выражении, но вам также нужно экранировать эти обратные слеши в строке C #.

Таким образом, @"/\*.*?\*/" или "/\\*.*?\\*/"

Кроме того, комментарий должен быть заменен пробелом, а не пустой строкой, если вы не уверены в своем вводе.

1 голос
/ 29 марта 2010

Используйте параметр опции RegexOptions.Multiline.

string output = Regex.Replace(input, pattern, string.Empty, RegexOptions.Multiline);

Полный пример

string input = @"this is some stuff right here
    /* blah blah blah 
    blah blah blah 
    blah blah blah */ and this is more stuff
    right here.";

string pattern = @"/[*][\w\d\s]+[*]/";

string output = Regex.Replace(input, pattern, string.Empty, RegexOptions.Multiline);
Console.WriteLine(output);
0 голосов
/ 29 марта 2010

Вы можете попробовать:

/\/\*.*?\*\//

Поскольку в регулярном выражении есть некоторые /, лучше использовать другой разделитель:

#/\*.*?\*/#
0 голосов
/ 29 марта 2010

Тебе нужно убежать от своего обратного слеша перед звездами.

string str = "hi /* hello */ hi";
str = Regex.Replace(str, "/\\*.*?\\*/", " ");
//str == "hi  hi"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...