Я ищу способ генерировать части N вопросительных знаков, к которым присоединяются с запятой.
string element="?";
string sep=",";
int n=4;
// code to run and create ?,?,?,?
Я смотрю простым способом. Вероятно, использование строки кода 1-2. В C++ существует заливка массива () и соединения.
Мне нужно это для Компактной Платформы
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(','));
var result = Enumerable.Repeat(element, n).DefaultIfEmpty("").Aggregate((s1, s2) => s1 + sep + s2);
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();
}
Это не фантастика, но и не загадочный лайнер. Любой, кто читает или поддерживает код, должен очень быстро его понять.
По некоторым данным, этот лайнер работает почти в два раза быстрее, чем два самых популярных одинарных лайнера.
В 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());
StringBuilder sb = new StringBuilder();
for(int i=0;i<n;i++)
sb.Append((i != n-1) ? "?," : "?");
string result = sb.ToString();
Не кратко, но это поможет ..
StringBuilder sb = new StringBuilder();
sb.Append(element);
for(int i = 1; i < n; i++){
sb.Append(sep);
sb.Append(element);
}
string output = sb.toString();
Одна строка
String s = "".PadLeft(n-1, 'X').Replace("X", element+sep) + element;
Вот и однострочный:)
int n = 10;
string element = "?";
string sep = ",";
string result = String.Join(sep, Enumerable.Range(0, n).Select(x => element).ToArray());
string result = String.Join(sep,Enumerable.Repeat(element, n).ToArray());
Вот еще одно однострочное выражение, чтобы делать то, что вы хотите (с LINQ):
string.join(sep, (from x in Enumerable.Range(1, n) select element).ToArray())
Стоимость прослушивателя события зависит от способа его использования в коде.
См. 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);
string output = "?";
int n = 4;
while (n > 1)
{ output += "," + "?"; n--; }
Используйте новый метод Enumerable.Repeat вместе с String.Join:
String.Join(sep, Enumerable.Repeat(element, n).ToArray());