Строка C# с несколькими двойными кавычками и косой чертой "/"

У меня есть такая строка

'Name.ToLower().Contains ("") And Created < ("05/12/2022 01:41:16") And Disabled == false'

Как с этим бороться на С#?

Я пытался добавить @""" и т. д.

дотнет рабочий пример

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

DiplomacyNotWar 12.05.2022 04:23

Я могу использовать С# 11, что нет проблем, я делаю это прямо сейчас :)

fuzzybear 12.05.2022 04:24

Отвечает ли это на ваш вопрос? Экранирование двойных кавычек в строке C#

Charlieface 12.05.2022 11:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
50
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий
var a = @"'Name.ToLower().Contains ("""") And Created < (""05/12/2022"") And ExpandOnStart == false'";

как это?

Привет, я не могу изменить строку, пока она не будет в переменной, поэтому нужно попробовать использовать строку как есть? Спасибо.

fuzzybear 12.05.2022 04:12

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

phuclv 12.05.2022 04:17

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

Matti Price 12.05.2022 04:20

Привет, правильно я упростил вопрос

fuzzybear 12.05.2022 04:24

@fuzzybear обновлен на основе вашей скрипки dotnet...

Matti Price 12.05.2022 04:30

Круто, именно так, большое спасибо

fuzzybear 12.05.2022 04:32

Очевидно, вам нужно как-то избегать специальных символов. В старом C# используйте дословные строки: https://dotnetfiddle.net/8OtiKP

@"'Name.ToLower().Contains ("""") And Created < (""05/12/2022"") And ExpandOnStart == false'"

Как видите, " по-прежнему нужно экранировать с помощью "", но все остальные символы, включая \, можно оставить как есть.

В C#11 есть лучшее решение: необработанный строковый литерал, где вообще не нужно экранировать "

"""'Name.ToLower().Contains ("") And Created < ("05/12/2022 01:41:16") And Disabled == false'"""

Это немного другой подход, но вы упомянули, что строка создается путем добавления других строк, поэтому, возможно, это поможет.

var createdDate = "05/12/2022";
var name = "some name";
var expandOnStart = "false";

var theString = $"Name.ToLower().Contains(\"{name}\") And Created < (\"{createdDate}\") And ExpandOnStart == \"{expandOnStart}\"";

// theString = Name.ToLower().Contains("some name") And Created < ("05/12/2022") And ExpandOnStart == "false"

https://dotnetfiddle.net/oq3UYq

Привет, спасибо за то, что строка изначально похожа на эту «Name.ToLower(). поместить это в var сначала в идеале?

fuzzybear 12.05.2022 04:18

Откуда вы берете строку? Возможно, вставка его в С# напрямую - не лучшее решение - например. если это в csv, может быть лучше читать из файла и программно избегать экранирования кавычек при чтении ввода

DACrosby 12.05.2022 04:33

Другие вопросы по теме