LINUX.ORG.RU

Как удалить экранируемый слэш из строки ?

 , ,


0

1

В файле записаны спец символы типа: \n,\r,\t. Программа считывает эти строки. Но она их считывает типа: \\n,\\r,\\t. Как убрать лишний слэш, то есть преобразовать эти строки в спецсимволы. Пробовал так:

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

Но после такой замены ничего не меняется, длина строки выдает 2 вместо 1.

Программа считывает эти строки. Но она их считывает типа

При такой постановке задачи могу посоветовать только сделать так чтобы она их считывала правильно.

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

Что мля ещё такое str? У std::string нет метода Replace. Что за нахрен @? Это не C++.

slovazap ★★★★★ ()
Последнее исправление: slovazap (всего исправлений: 1)

Записывай в файл нормально строки, чтобы они читались нормально.

Если этот файл писал другой инвалид, то напиши конвертер который будет заменять "\\n" на "\n" и т.д.

https://gcc.godbolt.org/z/YvMGrE

fsb4000 ★★★★★ ()
Последнее исправление: fsb4000 (всего исправлений: 2)
Ответ на: комментарий от wandrien

C# скорее всего.

По крайней мере для Raw String literal используется @

https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/tokens/verbatim

и методы именуются с большой буквы и есть метод Replace у string.

https://docs.microsoft.com/ru-ru/dotnet/api/microsoft.visualbasic.strings.replace?view=netcore-3.1

fsb4000 ★★★★★ ()
Ответ на: комментарий от fsb4000

Да, c# тут. Вопрос был, почему Replace не делает замену двойного слэша в одинарный. В файле спец-символы в виде текста просто записаны, поэтому после считывания нужно лишний слэш удалить.

dibr0v72 ()
Ответ на: комментарий от dibr0v72

Ну так забивай.

Вот список таких символов: https://docs.microsoft.com/en-us/archive/blogs/csharpfaq/what-character-escape-sequences-are-available

Но лучше бы тебе научиться записывать файл правильно, чтобы строка читалась без дополнительного преобразования.

fsb4000 ★★★★★ ()
Последнее исправление: fsb4000 (всего исправлений: 2)