Каков наилучший способ отделить строку с помощью функции string.format () или LINQ? - PullRequest
5 голосов
/ 28 ноября 2011

Есть ли способ изменить "ABCDEFGHIJKLMNOP" на "ABCD-EFGH-IJKL-MNOP" с помощью функции string.format() или, возможно, LINQ?
Я использую этот оператор

Out= String.Format("{0}-{1}", String.Format("{0}-{1}-{2}", In.Substring(0, 4), In.Substring(4, 4), In.Substring(8, 4)), In.Substring(12, 4));  

есть ли лучшеи более ясный способ сделать это?

Ответы [ 3 ]

10 голосов
/ 28 ноября 2011

Вы можете использовать string.Format, но вам все равно придется использовать SubString, чтобы получить разные детали.

Возможно, вам следует просто использовать Insert:

string result = myString.Insert(12, "-").Insert(8, "-").Insert(4, "-");

LINQ излишне из-за чего-то подобного.

9 голосов
/ 28 ноября 2011

Это действительно легко сделать без LINQ или string.format, поэтому я бы предложил использовать вместо этого код:

string s = "ABCDEFGHIJKLMNOP";
for( int i = 4; i < s.Length; i += 5){
  s = s.Insert(i, "-");
}

Это вставит тире после каждых 4 символов (я предположил, что это то, что выхотел).

3 голосов
/ 28 ноября 2011

Ради интереса, в Linq:

string result = input.Select((c, i) => i > 0 && i % 4 == 0 ? "-" + c : c.ToString())
                .Aggregate((s1, s2) => s1 + s2);

Конечно, я бы не рекомендовал использовать Linq в этом случае, поскольку «классическое» решение было бы более эффективным и более читабельным.

Тем не менее, мне понравилось писать это: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...