private static void FormatAllCards(CardMask cardMask, CardFormatInfo cardFormatInfo, bool isOnePatternAlreadyProcessed, StringBuilder sb, IDeck deck, char patternChar, int num1) { var cardIndexes = cardFormatInfo.Deck.ToCardIndexes(cardMask); var i = 0; foreach (var cardIndex in cardIndexes) { if (i == 0 && isOnePatternAlreadyProcessed) { sb.Append(cardFormatInfo.PatternSeparator); } var rankIndex = deck.ToRankIndex(cardIndex); var suitIndex = deck.ToSuitIndex(cardIndex); switch (patternChar) { case 'i': if (i != 0) { sb.Append(cardFormatInfo.CardIndexesSeparator); } sb.Append(cardIndex.ToString(CultureInfo.CurrentCulture)); break; case 'a': FormatAbbreviatedName(cardFormatInfo, i, sb, rankIndex, suitIndex); break; case 'c': FormatName(cardFormatInfo, i, sb, rankIndex, suitIndex); break; case 'r': case 's': FormatAbbreviatedName2(cardFormatInfo, i, sb, patternChar, rankIndex, suitIndex, num1); break; case 'R': case 'S': FormatName2(cardFormatInfo, i, sb, patternChar, rankIndex, suitIndex, num1); break; default: throw new ArgumentException(patternChar.ToString()); } ++i; } }