Экранирование кода C ++ в C # Regex - PullRequest
0 голосов
/ 10 марта 2009

Я пытаюсь вставить буквенные строки в файлы c ++ с помощью инструмента c #, и мне поручено автоматически добавлять escape-символы.

Для начала "=> \". Однако я не могу понять регулярное выражение, необходимое для преобразования экземпляров "в \"

    public String AddEscapeCharactersForCode(String content)
    {
        String escaper = "\\\\";
        String ncontent = Regex.Replace(content, "\\\\\"");
        ncontent = Regex.Replace(ncontent, "'", "\\\\'");
        ncontent = Regex.Replace(ncontent, "\n", "\\\\\n");
        return content;
    }

Приведенный выше код ничего не делает с моими строками, что приводит к неэкранированным кавычкам и неработающим файлам кода = (

Ответы [ 3 ]

4 голосов
/ 10 марта 2009

Ну, у вас есть:

// ...
return content;

... который просто возвращает переданную строку. Итак, все это Regex.Replace совершенство отбрасывается.

3 голосов
/ 10 марта 2009

Для этой простой задачи вам не нужно регулярное выражение. Использовать String.Replace() просто.

String.Replace Метод

Возвращает новую строку, в которой все вхождения указанного символа Unicode или String в этом случае заменяются другим указанным символом Unicode или String.

s1 = "some \"parts\" may be \"quoted\" here"
// s1 is <some "parts" may be "quoted" here>
s2 = s.replace("\"", "\\\"")
// s2 is <some \"parts\" may be \"quoted\" here>
1 голос
/ 10 марта 2009

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

public String AddEscapeCharactersForCode(String content)
{
  content = Regex.Replace(content, "[\"\\\\]", "\\$&");
  content = Regex.Replace(content, "\n", "\\n");
  return content;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...