String.Replace(char, char) в С#

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

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

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

Ответ 1

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

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

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

Ответ 2

Как замена "\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);

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

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

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

s.ReplaceTHAT();

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

Ответ 9

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

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

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

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);

Ответ 10

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

Ответ 11

@gnomixa - Что вы имеете в виду в своем комментарии о том, что ничего не добились? В VS2005 для меня работает следующее.

Если ваша цель - удалить символы новой строки, тем самым сокращая строку, посмотрите на это:

        string originalStringWithNewline = "12\n345"; // length is 6
        System.Diagnostics.Debug.Assert(originalStringWithNewline.Length == 6);
        string newStringWithoutNewline = originalStringWithNewline.Replace("\n", ""); // new length is 5
        System.Diagnostics.Debug.Assert(newStringWithoutNewline.Length == 5);

Если ваша цель - заменить символы новой строки символом пробела, оставив длину строки одинаковой, посмотрите на этот пример:

        string originalStringWithNewline = "12\n345"; // length is 6
        System.Diagnostics.Debug.Assert(originalStringWithNewline.Length == 6);
        string newStringWithoutNewline = originalStringWithNewline.Replace("\n", " "); // new length is still 6
        System.Diagnostics.Debug.Assert(newStringWithoutNewline.Length == 6);

И вы должны заменить односимвольные строки вместо символов, потому что '' не является допустимым символом, который должен быть заменен на Replace (строка, char)

Ответ 12

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

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" }, "");