Stack Overflow на русском Asked by stelz on January 20, 2021
Есть символ. Любой. Например: $
Как можно повторить его в строке определенное количество раз или исходя из определенных условий задачи?
Например, сделать строку из символов больше количество букв слова на два символа:
стол
$$$$$$
String s1 = "qwer";
String s2 = new String('$', 2 + s1.Length);
Console.WriteLine(s2);
s1 += new String('$', 6 - s1.Length);
Console.WriteLine(s1);
Correct answer by MBo on January 20, 2021
Мне предыдущие ответы нравятся, я просто для коллекции оставлю 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();
}
Answered by A K on January 20, 2021
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);
}
}
}
Answered by Casper on January 20, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP