Новая строка в константной ошибке
Я пишу код С#, в котором я извлекаю значения из базы данных и используя ее.
Проблема, с которой я столкнулся, выглядит следующим образом.
Если мое извлеченное значение из базы данных:
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.
Пожалуйста, помогите мне, как исправить эту ошибку.
Ответы
Ответ 1
Вы не можете просто написать "\"
в коде С#. Это приведет к ошибке "Новая строка в константе", потому что она "ускользает" от второй цитаты, так что она не учитывается. И строка не закрыта.
Используйте либо "\\"
(экранирование \
с самим собой)
или используйте @"\"
(стенографическая строка).
Ответ 2
Обратная косая черта в строковых литералах - это escape-символ, поэтому он должен либо экранировать себя:
"\\"
Или вы можете использовать так называемый дословный строковый литерал:
@"\"
Смотрите: http://msdn.microsoft.com/en-us/library/aa691090.aspx
Относительно вашей ошибки компиляции: обратная косая черта пропускает следующий знак кавычки, поэтому строковый литерал не распознается как закрытый. Следующие символы) и; действительны для строковых литералов, однако окончание строки (новая строка) не является. Отсюда ошибка.
Ответ 3
Это заменит только одну одиночную кавычку.
Чтобы использовать их все:
string cat1_escaped = cat1.Replace("'", "\'");
Хотя многие базы данных не избегают подобных кавычек, но, наоборот, удваивая их:
string cat1_escaped = cat1.Replace("'", "''");