Повторить символы в cтроке

362
17 июня 2022, 17:20

Есть символ. Любой. Например: $ Как можно повторить его в строке определенное количество раз или исходя из определенных условий задачи? Например, сделать строку из символов больше количество букв слова на два символа:

стол $$$$$$

Answer 1
using System;
namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            const int VALUE = 2;
            string[] results =
            {
                Repeat('$', "тестируем".Length, VALUE),
                Repeat('-', "на".Length, VALUE),
                Repeat('=', "нескольких".Length, VALUE),
                Repeat('*', "словах".Length, VALUE)
            };
            foreach (string result in results)
            {
                Console.WriteLine(result);
            }
        }
        private static string Repeat(char ch, int count, int summand)
        {
            return new string(ch, count + summand);
        }
    }
}
Answer 2
String s1 = "qwer";
String s2 = new String('$', 2 + s1.Length); 
Console.WriteLine(s2);
s1 += new String('$', 6 - s1.Length);
Console.WriteLine(s1);
Answer 3

Мне предыдущие ответы нравятся, я просто для коллекции оставлю linq-версию:

private static string Repeater(string source, char placeholder, int additional)
{
    return new string(Enumerable.Repeat(placeholder, source.Length + additional).ToArray());
}

Интересно кстати, что будет лучше преобразовывать в строку new string или string.Concat (нет под рукой студии):

private static string Repeater(string source, char placeholder, int additional)
{
    return string.Concat(Enumerable.Repeat(placeholder, source.Length + additional));
}

Ну и вот ещё linq-вариант, на других функциях:

private static string Repeater(string source, char placeholder, int additional)
{
    var a = source.Select(x => placeholder);
    var b = Enumerable.Repeat(placeholder, additional);
    return new string(a.Concat(b).ToArray());
}

(не стал в однострочник соединять для наглядности)

Ну и ещё один в голову пришёл:

private static string Repeater(string source, char placeholder, int additional)
{
    return Enumerable.Repeat(placeholder, source.Length + additional)
                     .Aggregate(new StringBuilder(), (seed, c) => seed.Append(c))
                     .ToString();
}
READ ALSO
C# WinForms Нужна помощь в унификация поиска процессов

C# WinForms Нужна помощь в унификация поиска процессов

Доброго времени суток программисты! В данный момент я пишу программу которая проверяет запущен-ли процесс Programm*****exe (Вместо звёздочек много...

333
Инкапсуляция. Принципы ООП

Инкапсуляция. Принципы ООП

Начал изучать объектно-ориентированное программированиеСо всеми принципами разобрался, но не могу до конца осмыслить, для чего нужна инкапсуляция

222
При перемещении exe+dll вылетает ошибка C#

При перемещении exe+dll вылетает ошибка C#

При запуске программы на моём пк всё нормально, но если запускать на другом, то выводит следующую ошибку

189
"Assembly will not load due to errors" Unity

"Assembly will not load due to errors" Unity

Делаю приложение на Unity, в котором нужно использовать базу данных, которая хранится на хостингеПри попытке добавить библиотеку MySql

240