Что такое эквивалент C # оператора повторения Perl? - PullRequest
7 голосов
/ 17 ноября 2008

In Perl

print "a" x 3;  # aaa

In C #

Console.WriteLine( ??? )

Ответы [ 4 ]

14 голосов
/ 17 ноября 2008

Это зависит от того, что вам нужно ... например, new string('a',3).

Для работы со строками; Вы могли бы просто зацикливаться ... не очень интересно, но это сработает.

С 3.5 вы можете использовать Enumerable.Repeat("a",3), но это дает вам последовательность строк, а не составную строку.

Если вы собираетесь использовать это часто, вы можете использовать специальный метод расширения C # 3.0:

    static void Main()
    {
        string foo = "foo";
        string bar = foo.Repeat(3);
    }
    // stuff this bit away in some class library somewhere...
    static string Repeat(this string value, int count)
    {
        if (count < 0) throw new ArgumentOutOfRangeException("count");
        if (string.IsNullOrEmpty(value)) return value; // GIGO            
        if (count == 0) return "";
        StringBuilder sb = new StringBuilder(value.Length * count);
        for (int i = 0; i < count; i++)
        {
            sb.Append(value);
        }
        return sb.ToString();
    }
5 голосов
/ 06 апреля 2009

Ну, во всех версиях .NET, чтобы повторить строку, вы всегда можете сделать это

public static string Repeat(string value, int count)
{
  return new StringBuilder().Insert(0, value, count).ToString();
}
5 голосов
/ 17 ноября 2008

Если вам нужно повторить только один символ (как в вашем примере), тогда это будет работать:

Console.WriteLine(new string('a', 3))
0 голосов
/ 17 ноября 2008

Если вам нужно сделать это со строками, указанными Томом, тогда метод расширения хорошо сработает.

static class StringHelpers
{
    public static string Repeat(this string Template, int Count)
    {
        string Combined = Template;
        while (Count > 1) {
            Combined += Template;
            Count--;
        }
        return Combined;
    }
}

class Program
{
    static void Main(string[] args)
    {
        string s = "abc";
        Console.WriteLine(s.Repeat(3));
        Console.ReadKey();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...