В моем приложении С# я использую пользовательский ввод для заполнения элементов в HighCharts. Проблема, с которой я сталкиваюсь, - это когда пользователь набирает customer's
которое заставляет приложение ломаться, если оно не экранировано, набрав \ перед '.
Вот раздел в Highcharts, который я заполняю с помощью пользовательского ввода:
subtitle: {
text: '<%=strDescription%>'
},
При добавлении записей вместо того, чтобы сообщать моим пользователям набирать \ перед вводом ', я хочу сделать это для них автоматически для них, когда я вытащил его из базы данных и назначил ему переменную. Вот что я пробовал:
strDescription = reader1.GetString(0);
strDescription.Replace("'", "\'");
Когда я удаляю косую черту с пользовательского ввода, она вызывает разрыв приложения, как будто строка не была экранирована. Обратите внимание на следующую ошибку:
subtitle: {
text: 'This goal will be set once we have bench-marked the first quarter results.'
},
Как я могу избежать одиночной кавычки правильно?
Я решил использовать это для решения моей проблемы.
strDescription = reader1.GetString(0).Replace("'", "\\'");
Один из способов сделать это - инвертировать кавычки - '' to ""
subtitle: {
text: "<%=strDescription%>"
},
string.replace
но хотел бы отметить этот как решенный
Вы можете использовать lookahead.
(?=')
А затем замените на \
.
@
перед строкой сделает его буквальным. Можете ли вы поставить двойные кавычки вокруг текстовой переменной вместо одинарных?strDescription = reader1.GetString(0).Replace("'", "\\'");
Однако я должен ждать 2 дня, прежде чем принять мой собственный ответ.