Как изменить окончание строки C # StringBuilder.AppendLine? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть старое приложение на C #, и я использую StringBuilder.AppendLine, чтобы добавить строки со строками, а затем вычислить контрольную сумму по строке. До сих пор это всегда работало на Windows Desktop / Windows CE, поэтому конец строки всегда был \r\n.

Теперь мне нужно, чтобы он работал одинаково на Linux / Mono. Но тогда AppendLine добавляет только \n вместо \r\n.

Так что я должен добавить идентичные окончания строк в строителе строк, как в Windows. Но как?

s.Append("\r\n");

не похоже на работу.

s.Append(13);
s.Append(10);

тоже не выполняет работу.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019
const string LineEnd = "\r\n";
s.Append(LineEnd);

добавляет конец строки в стиле windows также в unix / linux.

0 голосов
/ 17 апреля 2019

Вы не можете изменить значение, используемое StringBuilder. source использует Environment.NewLine, что будет \n в системе Linux.Там нет перегрузки.Вам нужно будет реализовать свой собственный метод или просто добавить как s.Append("13\r\n");

[System.Runtime.InteropServices.ComVisible(false)]
        public StringBuilder AppendLine(string value) {
            Contract.Ensures(Contract.Result<StringBuilder>() != null);
            Append(value);
            return Append(Environment.NewLine);
}
...