Метод String.Replace (char, char) в C # - PullRequest
71 голосов
/ 16 марта 2009

Как заменить \n на пустое место?

Я получаю пустую буквальную ошибку, если я делаю это:

string temp = mystring.Replace('\n', '');

Ответы [ 12 ]

122 голосов
/ 16 марта 2009

String.Replace('\n', '') не работает, потому что '' не является допустимым символьным литералом.

Если вы используете переопределение String.Replace (string, string), оно должно работать.

string temp = mystring.Replace("\n", "");
16 голосов
/ 16 марта 2009

Поскольку замена "\ n" на "" не дает желаемого результата, это означает, что на самом деле вы должны заменить не "\ n", а некоторую другую комбинацию символов.

Одна из возможностей заключается в том, что вы должны заменить комбинацию символов "\ r \ n", которая является кодом новой строки в системе Windows. Если вы замените только символ «\ n» (перевод строки), он оставит символ «\ r» (возврат каретки), который по-прежнему можно интерпретировать как разрыв строки в зависимости от способа отображения строки.

Если источник строки зависит от системы, вам следует использовать эту конкретную строку, в противном случае следует использовать Environment.NewLine для получения комбинации символов новой строки для текущей системы.

string temp = mystring.Replace("\r\n", string.Empty);

или

string temp = mystring.Replace(Environment.NewLine, string.Empty);
4 голосов
/ 15 ноября 2013
string temp = mystring.Replace("\n", string.Empty).Replace("\r", string.Empty);

Очевидно, что это удаляет '\ n' и '\ r' и так же просто, как я знаю, как это сделать.

4 голосов
/ 16 марта 2009

Это должно работать.

string temp = mystring.Replace("\n", "");

Вы уверены, что в исходной строке есть новые \ n новые строки?

2 голосов
/ 11 октября 2012

Найдено на Bytes.com :

string temp = mystring.Replace('\n', '\0');// '\0' представляет пустой символ

2 голосов
/ 16 марта 2009

Если вы используете

string temp = mystring.Replace("\r\n", "").Replace("\n", "");

тогда вам не придется беспокоиться о том, откуда исходит ваша строка.

1 голос
/ 27 ноября 2011

Вот ваш точный ответ ...

const char LineFeed = '\n'; // #10
string temp = new System.Text.RegularExpressions.Regex(
                  LineFeed
              ).Replace(mystring, string.Empty);

Но этот намного лучше ... Особенно, если вы пытаетесь разбить строки (вы также можете использовать его с разделением)

const char CarriageReturn = '\r'; // #13
const char LineFeed = '\n'; // #10
string temp = new System.Text.RegularExpressions.Regex(
                  string.Format("{0}?{1}", CarriageReturn, LineFeed)
              ).Replace(mystring, string.Empty);
1 голос
/ 16 марта 2009

Как насчет создания метода расширения, подобного этому ...

 public static string ReplaceTHAT(this string s)
 {
    return s.Replace("\n\r", "");
 }

А потом, когда вы захотите заменить это, где вы хотите, вы можете сделать это.

s.ReplaceTHAT();

С наилучшими пожеланиями!

1 голос
/ 16 марта 2009

Одно предупреждение: в .NET перевод строки - "\ r \ n". Поэтому, если вы загружаете свой текст из файла, вам, возможно, придется использовать его вместо "\ n"

edit> Как указал Самуэль в комментариях, "\ r \ n" не является специфичным для .NET, но является специфичным для Windows.

0 голосов
/ 20 января 2013

Я знаю, что это старый пост, но я бы хотел добавить свой метод.

public static string Replace(string text, string[] toReplace, string replaceWith)
    {
        foreach (string str in toReplace)
           text = text.Replace(str, replaceWith);

        return text;
    }

Пример использования:

string newText = Replace("This is an \r\n \n an example.", new string[] { "\r\n", "\n" }, "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...