Подтвердить что ты не робот

Новая строка в константной ошибке

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

Если мое извлеченное значение из базы данных:

 string cat1 = "sotheby's";

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

  string cat1 = "sotheby's";
                    if (cat1.Contains("'")) {
                        var indexofquote = cat1.IndexOf("'");
                        cat1.Insert(indexofquote-1,"\");
                        var cat2 = cat1;
                    }

Ошибка в строке вставки, обратная косая черта (escape-символ). Ошибка: New Line in Constant. Пожалуйста, помогите мне, как исправить эту ошибку.

4b9b3361

Ответ 1

Вы не можете просто написать "\" в коде С#. Это приведет к ошибке "Новая строка в константе", потому что она "ускользает" от второй цитаты, так что она не учитывается. И строка не закрыта.

Используйте либо "\\" (экранирование \ с самим собой)
или используйте @"\" (стенографическая строка).

Ответ 2

Обратная косая черта в строковых литералах - это escape-символ, поэтому он должен либо экранировать себя:

"\\"

Или вы можете использовать так называемый дословный строковый литерал:

@"\"

Смотрите: http://msdn.microsoft.com/en-us/library/aa691090.aspx

Относительно вашей ошибки компиляции: обратная косая черта пропускает следующий знак кавычки, поэтому строковый литерал не распознается как закрытый. Следующие символы) и; действительны для строковых литералов, однако окончание строки (новая строка) не является. Отсюда ошибка.

Ответ 3

Это заменит только одну одиночную кавычку. Чтобы использовать их все:

string cat1_escaped = cat1.Replace("'", "\'");

Хотя многие базы данных не избегают подобных кавычек, но, наоборот, удваивая их:

string cat1_escaped = cat1.Replace("'", "''");