Удаление разрывов строк с помощью C # - PullRequest
10 голосов
/ 03 декабря 2011

Я получаю строку из поля базы данных с именем 'Description', и в ней есть разрывы строк. Это выглядит так:


Заголовок элементов

Описание идет здесь. Это описание предметов.


Как я могу удалить разрывы строк. Я попробовал следующую функцию, но она не работает:

public string FormatComments(string comments)
{
    string result = comments.Replace(@"\r\n\", "");
    result = result.Replace(" ", "");
    return result;
}

Пожалуйста, предложите решение.

С уважением, Асиф Хамид

Ответы [ 5 ]

19 голосов
/ 03 декабря 2011

Основная причина заключается в том, что вы используете дословно строковый литерал (с префиксом @) и заканчиваете его литералом \. В результате Replace в конечном итоге будет искать замену последовательности символов \, r, \, n, \ вместо новой строки.

Это должно исправить это:

string result = comments.Replace("\r\n", ""); // Not idiomatic

Но более идиоматическим (и переносимым) будет:

string result = comments.Replace(Environment.NewLine, "");

(РЕДАКТИРОВАТЬ: Это, конечно, предполагает, что системы, которые пишут в БД, используют те же соглашения о новой строке, что и системы, которые читают из него, или что переводы происходят прозрачно. Если это не так, вы, конечно, лучше использовать фактическую последовательность символов, которую вы хотите использовать для представления новой строки.)

Кстати, похоже, вы пытаетесь избавиться от всех пробелов.

В этом случае вы можете сделать:

// Split() is a psuedo-overload that treats all whitespace
// characters as separators.
string result = string.Concat(comments.Split()); 
8 голосов
/ 03 декабря 2011

Вы пробовали использовать регулярные выражения?Они очень хорошо справляются с такими задачами

result = Regex.Replace(result, @"\r\n?|\n", " ");
1 голос
/ 20 марта 2014

Для удаления всех новых строк, независимо от среды или плохо сформированных строк, я думаю, что это самый простой вариант:

var singleLineString = multilineString.Replace("\r", string.Empty).Replace("\n", string.Empty);
1 голос
/ 03 декабря 2011

Ваша проблема - символ @.В этом нет необходимости.

Вы хотите

comments.Replace("\r\n", "");
0 голосов
/ 29 октября 2013

используйте этот код для замены новой строки

myString = myString.Replace (System.Environment.NewLine, "текст замены");

...