Есть ли встроенная функция для повторения строки или символа в .NET?
Существует ли в C# функция, которая возвращает x количество заданного символа или строки? Или мне придется реализовать ее самостоятельно?
4 ответ(ов)
Ваш код на C# использует метод string.Join
в сочетании с Enumerable.Repeat
. Рассмотрим оба примера.
В первом примере:
string.Join("", Enumerable.Repeat("ab", 2));
Метод Enumerable.Repeat("ab", 2)
создает последовательность, состоящую из двух элементов, каждый из которых равен строке "ab"
. Затем string.Join
объединяет эти элементы в одну строку, используя пустую строку (""
) в качестве разделителя. В результате вы получаете строку "abab"
.
Во втором примере:
string.Join("", Enumerable.Repeat('a', 2));
Здесь Enumerable.Repeat('a', 2)
создает последовательность из двух символов 'a'
. Аналогично, string.Join
объединяет эти символы в одну строку, также используя пустую строку в качестве разделителя. В результате получается строка "aa"
.
Таким образом, оба примера демонстрируют, как можно использовать Enumerable.Repeat
для создания повторяющихся строк или символов, которые потом объединяются с помощью string.Join
.
Код string.Concat(Enumerable.Repeat("ab", 2));
возвращает строку "abab"
.
Объяснение:
Enumerable.Repeat("ab", 2)
создает последовательность, содержащую строку"ab"
дважды.- Затем
string.Concat(...)
объединяет все элементы этой последовательности в одну строку.
Таким образом, результатом выполнения этого кода является строка, состоящая из двух частей "ab"
, что дает итог "abab"
.
Для строк действительно стоит использовать решение Кирка:
string.Join("", Enumerable.Repeat("ab", 2));
Однако для символов можно воспользоваться встроенным (более эффективным) конструктором строки:
new string('a', 2); // возвращает aa
Лучшее решение — это встроенная строковая функция:
Strings.StrDup(2, "a")
Эта функция позволяет дублировать указанную строку заданное количество раз. В данном примере строка "a" будет повторена 2 раза, что в результате даст "aa".
Как установить заголовок Content-Type для запроса HttpClient?
Как добавить пользовательский ввод в SQL-запрос?
Таймаут при использовании Linq-to-SQL
Обрезка строки запроса и возврат чистого URL в C# ASP.NET
Как запустить модульные тесты на платформе x64?