Я могу “умножить” строку (в C#)?

У меня была такая же ошибка, но я исправил ее, изменив php.ini и / или отредактировав файл PHP!

blockquote>

Есть два разных способа обойти синтаксис синтаксического анализа.

Способ 1 (ваш файл PHP)

Избегайте в вашем файле PHP этого:


Убедитесь, что вы так выразились


Ваш код содержит

ПРИМЕЧАНИЕ: Отсутствует php после !

Способ 2 (файл php.ini)

Существует также простой способ решить вашу проблему. Найдите значение свойства short_open_tag (используйте в текстовом редакторе с помощью Ctrl + F!) [/ ​​G2] и примените следующее изменение:

; short_open_tag = Off

-

short_open_tag = On

Согласно описанию основных директив php.ini , short_open_tag позволяет использовать короткий открытый тег (), хотя это может вызвать проблемы при использовании с xml ( не будет работать, если это включено)!

ПРИМЕЧАНИЕ: Перезагрузите свой сервер (например, Apache) и перезагрузите веб-страницу PHP в своем браузере.

125
задан inspite 10 February 2009 в 16:32
поделиться

10 ответов

В .NET 4 вы можете сделать следующее:

String.Concat(Enumerable.Repeat("Hello", 4))
216
ответ дан 24 November 2019 в 00:48
поделиться

Обратите внимание, что, если Ваша "строка" является только отдельным символом, существует перегрузка строкового конструктора для обработки его:

int multipler = 10;
string TenAs = new string ('A', multipler);
90
ответ дан 24 November 2019 в 00:48
поделиться

К сожалению / к счастью, строковый класс изолируется так, Вы не можете наследоваться ему и перегрузиться * оператор. Можно создать дополнительный метод хотя:

public static string Multiply(this string source, int multiplier)
{
   StringBuilder sb = new StringBuilder(multiplier * source.Length);
   for (int i = 0; i < multiplier; i++)
   {
       sb.Append(source);
   }

   return sb.ToString();
}

string s = "</li></ul>".Multiply(10);
60
ответ дан 24 November 2019 в 00:48
поделиться

я с DrJokepu на этом , но если бы по некоторым причинам Вы действительно хотели обмануть использующую встроенную функциональность затем, то Вы могли бы сделать что-то вроде этого:

string snip = "</li></ul>";
int multiplier = 2;

string result = string.Join(snip, new string[multiplier + 1]);

Или, если Вы используете.NET 4:

string result = string.Concat(Enumerable.Repeat(snip, multiplier));

Лично я не обеспокоился бы, хотя - пользовательский дополнительный метод намного более хорош.

11
ответ дан 24 November 2019 в 00:48
поделиться

Необходимо было бы записать метод - конечно, с C# 3.0, это мог быть дополнительный метод:

public static string Repeat(this string, int count) {
    /* StringBuilder etc */ }

затем:

string bar = "abc";
string foo = bar.Repeat(2);
9
ответ дан 24 November 2019 в 00:48
поделиться
string Multiply(string input, int times)
{
     StringBuilder sb = new StringBuilder(input.length * times);
     for (int i = 0; i < times; i++)
     {
          sb.Append(input);
     }
     return sb.ToString();
}
2
ответ дан 24 November 2019 в 00:48
поделиться

Хорошо, вот мое взятие по вопросу:

public static class ExtensionMethods {
  public static string Multiply(this string text, int count)
  {
    return new string(Enumerable.Repeat(text, count)
      .SelectMany(s => s.ToCharArray()).ToArray());
  }
}

я немного глуп, конечно, но когда у меня должно быть табулирование в генерирующих код классах, Счетных. Повторение делает это для меня. И да, версия StringBuilder прекрасна, также.

0
ответ дан 24 November 2019 в 00:48
поделиться

Для полноты картины - вот еще один способ сделать это:

public static string Repeat(this string s, int count)
{
    var _s = new System.Text.StringBuilder().Insert(0, s, count).ToString();
    return _s;
}

Мне кажется, я вытащил его из Stack Overflow некоторое время назад, так что это не моя идея.

10
ответ дан 24 November 2019 в 00:48
поделиться

Вот мой вариант, на всякий случай:

    /// <summary>
    /// Repeats a System.String instance by the number of times specified;
    /// Each copy of thisString is separated by a separator
    /// </summary>
    /// <param name="thisString">
    /// The current string to be repeated
    /// </param>
    /// <param name="separator">
    /// Separator in between copies of thisString
    /// </param>
    /// <param name="repeatTimes">
    /// The number of times thisString is repeated</param>
    /// <returns>
    /// A repeated copy of thisString by repeatTimes times 
    /// and separated by the separator
    /// </returns>
    public static string Repeat(this string thisString, string separator, int repeatTimes) {
        return string.Join(separator, ParallelEnumerable.Repeat(thisString, repeatTimes));
    }
0
ответ дан 24 November 2019 в 00:48
поделиться

Если у вас .Net 3.5, но не 4.0, вы можете использовать System.Linq

String.Concat(Enumerable.Range(0, 4).Select(_ => "Hello").ToArray())
2
ответ дан 24 November 2019 в 00:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: