C# Кодирование текстовой строки с разрывами строк

У меня есть строка, которую я пишу в выходной поток ответа. После того, как я сохраню этот документ и открою его в Notepad++ или WordPad, я получаю хорошо отформатированные разрывы строк там, где они предназначены, но когда я открываю этот документ с помощью обычного старого блокнота Windows, я получаю одну длинную текстовую строку с □ (квадратные символы), где разрывы строк должны быть.

У кого-нибудь был опыт с этим?


person jim    schedule 27.07.2009    source источник


Ответы (5)


Да, это означает, что вы используете \n в качестве разрыва строки вместо \r\n. Блокнот понимает только последнее.

(Обратите внимание, что Environment.NewLine, предложенный другими, подходит, если вы хотите использовать платформу по умолчанию, но если вы обслуживаете из Mono и определенно хотите \r\n, вы должны указать это явно.)

person Jon Skeet    schedule 27.07.2009
comment
Спасибо, Джон. обслуживание от Моно? Что это? - person jim; 27.07.2009
comment
Например, развертывание сервера с использованием Mono в Linux и запрос этого сервера на обслуживание данных. Mono — это кроссплатформенная реализация .NET. См. mono-project.com. - person Jon Skeet; 27.07.2009

Используйте Environment.NewLine для разрывов строк.

person Tadas Šukys    schedule 27.07.2009

Попробуй это :

string myStr = ...
myStr = myStr.Replace("\n", Environment.NewLine)
person Guillaume    schedule 27.07.2009
comment
если входная строка содержит как \n, так и \r\n, такая операция сломает ее - person abatishchev; 27.07.2009
comment
Я получаю одну длинную текстовую строку с квадратными символами [] там, где должны быть разрывы строк. Похоже, это не так. - person Guillaume; 27.07.2009
comment
@Guillaume: На этот раз это не так, но нет причин, по которым файл не может содержать два или более разных типа разделителей строк - я постоянно вижу их на веб-страницах. Когда вы нормализуете новые строки, вы всегда должны сопоставлять все три типа: Regex.Replace(@"\n|\r\n?", "\r\n") - person Alan Moore; 29.07.2009
comment
Когда вы не эмализируете новые строки из нестандартного источника, все в порядке. Но когда вы ЗНАЕТЕ, что у вас будет ТОЛЬКО '\n', вам не нужно регулярное выражение... - person Guillaume; 29.07.2009

Попробуйте \n\n , это сработает! :)

public async Task AjudaAsync(IDialogContext context, LuisResult result){
await context.PostAsync("How can I help you? \n\n 1.To Schedule \n\n 2.Consult");
context.Wait(MessageReceived);
}
person Pedro Miranda    schedule 08.11.2016

Также:

string s = $"first line{Environment.NewLine}second line";
person MachPlomo    schedule 15.03.2021