2012-04-10 5 views
17

У меня длинная строка.Добавить возврат каретки в строку

string s1 = "'99024','99050','99070','99143','99173','99191','99201','99202','99203','99204','99211','99212','99213','99214','99215','99217','99218','99219','99221','99222','99231','99232','99238','99239','99356','99357','99371','99374','99381','99382','99383','99384','99385','99386','99391','99392'"; 

Я хочу

string s2 = 
      "'99024', 
      '99050', 
      '99070', 
      '99143', 
      '99173', 
      '99191', 
      '99201', 
      '99202',...."; 

Другими словами. Может быть, ему нравится:

string s2 = "'99024',"+'\n'+"'99050',"+'\n'+"'99070',"+'\n'+"'99143',"+'\n'+.....; 

Мне нужен кратчайший код. Возможно, LINQ. Благодарю.

+0

@ user1108948 технически, что вы хотите «новая линия» не «возврат каретки» – codechimp

ответ

20
string s2 = s1.Replace(",", ",\n"); 
+0

Возможно, вам понадобится s1.Replace (",", ", \ n"). TrimEnd (',', '\ n'); для удаления конечной пары. – blowdart

+0

Я знаю, просто чтобы быть быстрым, пост без тестирования :) –

+0

@blowdart Вы принимаете их за конечную запятую. Нет. – Servy

34
string s2 = s1.Replace(",", "," + Environment.NewLine); 

Кроме того, только с точки зрения производительности, вот как три существующих решений я видел складываю над 100k итераций:

ReplaceWithConstant   - Ms: 328, Ticks: 810908 
ReplaceWithEnvironmentNewLine - Ms: 310, Ticks: 766955 
SplitJoin      - Ms: 483, Ticks: 1192545 

ReplaceWithConstant:

string s2 = s1.Replace(",", ",\n"); 

ReplaceWithEnvironmentNewLine:

string s2 = s1.Replace(",", "," + Environment.NewLine); 

SplitJoin:

string s2 = String.Join("," + Environment.NewLine, s1.Split(',')); 

ReplaceWithEnvironmentNewLine и ReplaceWithConstant находятся в пределах погрешности друг от друга, так что нет никакой разницы функционально.

Использования Environment.NewLine должен быть более предпочтительным, чем "\n" ради удобства чтения и последовательности, аналогичного использование String.Empty вместо "".

+0

Я думаю, что никто не проверяет свой код. это не 'replace' –

+0

@ L.B Я обычно отправляю затем тест, так как, к сожалению, время ответа критическое. Поймал ошибку в LinqPad через несколько секунд после публикации. –

+0

Посмотрите мои комментарии в другом ответе :) –

0
string s2 = s1.Replace(",", ",\n") + ",...."; 
0

Другой вариант:

string s2 = String.Join("," + Environment.NewLine, s1.Split(',')); 
0

Environment.NewLine следует использовать как сказал Дэн Ригби, но есть одна проблема с String.Empty. Он останется всегда пустым, независимо от того, будет ли он прочитан до или после его чтения. Вчера у меня была проблема в моем проекте. Я удалил его, и он работал так, как предполагалось. Лучше объявить переменную, а затем вызвать ее, когда это необходимо. String.Empty всегда будет пустым, если переменная не должна быть инициализирована, и только тогда вы должны использовать String.Empty. Думал, что я выброшу этот кусочек для всех, поскольку я испытал это.

-1

строка s2 = s1.Replace (",", ", \ r \ n");

+0

Этот ответ уже существует, и вам уже около 5 лет. Почему ответ на такой старый вопрос, который не добавляет ничего нового? – gilliduck