Member 13199106 Ответов: 3

C# нужна помощь в преобразовании двух обратных косых черт в одну


Привет, как говорится в названии, у меня возникли проблемы с преобразованием 2 обратных косых черт в 1.

Итак, вот что я пытаюсь сделать в проекте, у меня есть текстовое поле и combobox, textbox. Текстовое поле содержит имя папки, а поле со списком - каталог хранения, например;
Combobox скажет HDD:\ и текстовое поле скажет Games\, теперь с помощью нажатия кнопки я хотел бы сохранить местоположение и имя папки в файл Json. Но после сохранения в JSON-файл он появится вот так.

"quick": {
    "LaunchTitle1": "Black Ops 3",
    "LaunchDir1": "Games\\",
    "LaunchName1": "Black Ops 3",
    "LaunchStorage1": "HDD:\\",
  },


Но проблема в том, что он будет работать только с 1 обратной косой чертой, а не с двумя.

А теперь кусочек моего кода.

string temp = tbDir.Text;
           temp = temp.Replace(@"\\", @"\");

           string temp1 = comboBoxEdit1.Text;
           temp1 = temp1.Replace(@"\\", @"\");

           Program.Settings.quick.LaunchStorage1 = temp1;
           Program.Settings.quick.LaunchTitle1 = lvDir.FocusedItem.Text;
           Program.Settings.quick.LaunchName1 = lvDir.FocusedItem.Text;
           Program.Settings.quick.LaunchDir1 = temp;
           Program.Settings.Save();


Пожалуйста, имейте в виду, что я только начал программировать (если вы классифицируете это как программирование) 2 месяца назад, так что, пожалуйста, полегче со мной, у меня есть google этот вопрос, и все ответы используют метод замены, который я пытаюсь сделать. Спасибо за помощь заранее.

Что я уже пробовал:

temp = temp.Replace(@"\\", @"\");

          string temp1 = comboBoxEdit1.Text;
          temp1 = temp1.Replace(@"\\", @"\");

Member 10406401

Какой фреймворк / dll вы использовали для сериализации в JSON.

3 Ответов

Рейтинг:
10

Patrice T

\ имеют особое значение в JSON-файл, который кодируется \\.
Если Вы читаете json с помощью правильного считывателя, он автоматически декодируется в один \ в переменной.

причина этого \\ это \ это побег чар. Если вы столкнетесь \" в файле json это означает, что " является частью строки, а не концом строки.

Таким образом, единственным решением является использование правильного считывателя json для обеспечения правильного декодирования.

Ваш код snipset не позволяет нам знать, где вы читаете файл json или где он хранится или что находится в переменных.


Рейтинг:
1

OriginalGriff

Оставь его в покое! Это то, что он должен делать, и он будет отменен, когда данные JSON будут обработаны и считаны обратно в ваше приложение.

В данных JSON (и во многих других системах, таких как C#, например) обратная косая черта действует как символ "escape", позволяя вводить "специальные символы" в строку, добавляя " \ " перед символом или кодом. Например, вы используете его для введения двойной кавычки без окончания строки:

"hello \"Member 13199106\""
Что создает такую строку:
hello "Member 13199106"
Это означает, что для вставки обратной косой черты она должна быть записана как обратная косая черта (escape-символ), за которой следует обратная косая черта (to insert): "\\"


Рейтинг:
0

Mehdi Gholam

Два ' \ ' в строке являются частью стандарта json.

Чтобы прочитать файл json, используйте библиотеку вместо прямого чтения файла json (они обрабатывают преобразование за вас)
Попробовать это : fastJSON[^]