Каков самый легкий путь в C# для урезания новой строки строки?

Начиная с ES6, вы не можете создавать Enums как таковые, но у вас может быть более элегантный синтаксис, подходящий для автозаполнения кода, по крайней мере для VSCode:

class MyEnum {
  const A = '1'
  const B = '2'
  const C = '3'
}

На плюсе вы можете поместить все, что угодно. хочу внутри const, как и в других ответах. Кроме того, в Node вы можете экспортировать его как часть модуля, сохранив значимое имя.

import { MyEnum } from './my-enum'

console.log(MyEnum.B)

Надеюсь, это поможет.

106
задан Edward Tanguay 24 June 2009 в 12:22
поделиться

7 ответов

Для меня работает следующее:

sb.ToString().TrimEnd( '\r', '\n' );

или

sb.ToString().TrimEnd( Environment.NewLine.ToCharArray());
242
ответ дан 24 November 2019 в 03:45
поделиться

Используйте платформу. Метод ReadLine () должен сказать следующее:

Строка определяется как последовательность символы, за которыми следует перевод строки ("\ n"), возврат каретки ("\ r") или сразу после возврата каретки переводом строки ("\ r \ n"). Строка который возвращается, не содержит завершение возврата каретки или строки feed.

Таким образом, следующий трюк поможет

_content = new StringReader(sb.ToString()).ReadLine();
9
ответ дан 24 November 2019 в 03:45
поделиться

Как насчет:

public static string TrimNewLines(string text)
{
    while (text.EndsWith(Environment.NewLine))
    {
        text = text.Substring(0, text.Length - Environment.NewLine.Length);
    }
    return text;
}

Это несколько неэффективно, если есть несколько новых строк, но это будет работать.

В качестве альтернативы, если вы не против обрезки (скажем) "\ r \ r \ r \ r" или "\ n \ n \ n \ n" , а не просто "\ r \ n \ r \ n \ r \ n" :

// No need to create a new array each time
private static readonly char[] NewLineChars = Environment.NewLine.ToCharArray();

public static string TrimNewLines(string text)
{
    return text.TrimEnd(NewLineChars);
}
14
ответ дан 24 November 2019 в 03:45
поделиться

А как насчет

_content = sb.ToString().Trim(Environment.NewLine.ToCharArray());
6
ответ дан 24 November 2019 в 03:45
поделиться
_content = sb.TrimEnd(Environment.NewLine.ToCharArray());

Это, конечно же, удалит «\ r \ r \ r \ r», а также «\ n \ n \ n \ n» и другие комбинации. И в "средах", где NewLine отличается от "\ n \ r", вы можете получить странное поведение: -)

Но если вы можете смириться с этим, то я считаю, что это наиболее эффективный способ удалить символы новой строки в конец строки.

4
ответ дан 24 November 2019 в 03:45
поделиться

Как насчет только:

string text = sb.ToString().TrimEnd(null)

Это вытянет все пробельные символы из конца строки - проблема только в том случае, если вы хотите сохранить пробелы без новой строки.

3
ответ дан 24 November 2019 в 03:45
поделиться

Отчасти из отсутствие ответа, но самый простой способ вырезать новую строку из строки - это вообще не иметь новой строки в строке, убедившись, что ваш собственный код никогда не видит ее. То есть с помощью собственных функций, удаляющих новую строку. Многие методы stream и file / io не будут включать новую строку, если вы запрашиваете вывод построчно, хотя может потребоваться обернуть что-то в System.IO.BufferedStream .

Такие вещи, как ] System.IO.File.ReadAllLines может использоваться вместо System.IO.File.ReadAllText большую часть времени, а ReadLine может использоваться вместо ] Прочтите , когда будете работать с нужным типом потока (например, грамм. BufferedStream ).

1
ответ дан 24 November 2019 в 03:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: