Как может создать объекты N определенного элемента в c#?

Я ищу способ генерировать части N вопросительных знаков, к которым присоединяются с запятой.

string element="?";
string sep=",";
int n=4;
// code to run and create ?,?,?,?
  • РЕДАКТИРОВАНИЕ 1

Я смотрю простым способом. Вероятно, использование строки кода 1-2. В C++ существует заливка массива () и соединения.

  • РЕДАКТИРОВАНИЕ 2

Мне нужно это для Компактной Платформы

5
задан Michael Todd 12 February 2010 в 16:38
поделиться

13 ответов

static class Extensions
{
     public static string Times(this string s, int count)
     {
          StringBuilder sb = new StringBuilder(count * s.Length);
          for (int i = 0; i < count; i++)
          {
              sb.Append(s);
          }
          return sb.ToString();
     }
}

Использование:

Console.WriteLine("?,".Times(5).Trim(','));
1
ответ дан 18 December 2019 в 10:44
поделиться
var result = Enumerable.Repeat(element, n).DefaultIfEmpty("").Aggregate((s1, s2) => s1 + sep + s2);
3
ответ дан 18 December 2019 в 10:44
поделиться
static string BuildSeparatedString(string element, string sep, int count)
{
  StringBuilder sb = new StringBuilder();

  for (int i = 1; i <= count; i++)
  {
    sb.Append(element);

    if (i != count)
      sb.Append(sep);
  }
  return sb.ToString();
}

Это не фантастика, но и не загадочный лайнер. Любой, кто читает или поддерживает код, должен очень быстро его понять.

По некоторым данным, этот лайнер работает почти в два раза быстрее, чем два самых популярных одинарных лайнера.

2
ответ дан 18 December 2019 в 10:44
поделиться

В C # я бы сделал:

StringBuilder sb = new StringBuilder();
string element="?";
string sep=",";
int n=4;

for (int x = 0; x < n; x++)
{
    sb.Append(element);
    sb.Append(sep);
}

if (sb.Length > 0)
{
    // remove the final separator
    sb.Length -= sep.Length;
}

Console.WriteLine(sb.ToString());
1
ответ дан 18 December 2019 в 10:44
поделиться
StringBuilder sb = new StringBuilder();
for(int i=0;i<n;i++)
  sb.Append((i != n-1) ? "?," : "?");
string result = sb.ToString();
0
ответ дан 18 December 2019 в 10:44
поделиться

Не кратко, но это поможет ..

StringBuilder sb = new StringBuilder();
sb.Append(element);
for(int i = 1; i < n; i++){
   sb.Append(sep);
   sb.Append(element);
}
string output = sb.toString();
0
ответ дан 18 December 2019 в 10:44
поделиться

Одна строка

String s = "".PadLeft(n-1, 'X').Replace("X", element+sep) + element;
0
ответ дан 18 December 2019 в 10:44
поделиться

Вот и однострочный:)

 int n = 10;
 string element = "?";
 string sep = ",";

 string result = String.Join(sep, Enumerable.Range(0, n).Select(x => element).ToArray());
0
ответ дан 18 December 2019 в 10:44
поделиться
string result = String.Join(sep,Enumerable.Repeat(element, n).ToArray());
0
ответ дан 18 December 2019 в 10:44
поделиться

Вот еще одно однострочное выражение, чтобы делать то, что вы хотите (с LINQ):

string.join(sep, (from x in Enumerable.Range(1, n) select element).ToArray())
0
ответ дан 18 December 2019 в 10:44
поделиться

Стоимость прослушивателя события зависит от способа его использования в коде.

См. http://www.javascriptrules.com/2009/07/22/cross-browser-event-listener-with-design-patterns/

-121--3425109-

Одна строка

String s = "".PadLeft(n-1, 'X').Replace("X", element+sep) + element;
-121--4631756-
string element = "?";
string sep = ",";
int n = 4;

string[] array = new string[n];

for (int i = 0; i < array.Length; i++) {
    array[i] = element;
}

string result = String.Join(sep, array);
0
ответ дан 18 December 2019 в 10:44
поделиться
        string output = "?";
        int n = 4;
        while (n > 1)
        { output += "," + "?"; n--; }
0
ответ дан 18 December 2019 в 10:44
поделиться

Используйте новый метод Enumerable.Repeat вместе с String.Join:

String.Join(sep, Enumerable.Repeat(element, n).ToArray());
9
ответ дан 18 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

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