2014-07-01 4 views
-1

Я хочу удалить первую запятую. Есть ли способ удалить запятую петли?Как удалить запятую в цикле for?

Вот мой код:

foreach (var field in tablefields.Items) 
{ 
    if (m_datacount < datatype.Items.Count) 
    { 
     d_type = datatype.Items[m_datacount].ToString(); 
     m_datacount++; 
    } 

    richTextBox1.Text = richTextBox1.Text + "\t,@" + field + " " + d_type + "\n"; 
    datatype.ResetText(); 
} 

m_datacount = 0; 

Выход:

,@id uniqueidentifier 
,@title varchar 
,@active_flag bit 
,@created_by_id uniqueidentifier 
,@created_by_system_code varchar 
,@created_date_time datetime 
,@modified_by_id uniqueidentifier 
,@modified_by_system_code varchar 
,@modified_date_time datetime 
+2

Что такое 'tablefields.Items'? –

ответ

2

Why reinvent the wheel....

String.Join Просто используйте

string result = String.Join(", ", myarray); 

для, например,

string[] myarray = { "Firstuser", "Seconduser" }; 

Так result будет "Firstuser, Seconduser",

+3

Что такое 'myarray'? –

+0

Ваша коллекция, которую вы хотите сгладить. –

+0

У ОП нет «myarray» в его вопросе, вот что говорит @TimSchmelter. – Abbas

0

TrimEnd метод может быть использован для удаления завершающих символов из строки:

richTextBox1.Text = richTextBox1.Text.TrimEnd(','); 
+0

удалил все мои комы – user3788757

0

вы можете использовать ниже menioned код

richTextBox1.Text = richTextBox1.Text.Substring(0,richTextBox1.Text.Length-1); 
-1
richTextBox1.Text + "" + t_fields + "\n\t,".Remove(richTextBox1.Text.Lenght - 1); 

проверьте также удалив последний указатель. используя Remove(index)

0

Какова цель field2? Он не используется в коде ...

Почему использовать счетчик (m_fieldcount), если вы используете цикл Еогеасп?

Что такое tablefields.ResetText(); делать?

Во всяком случае, попробуйте следующее:

richTextBox1.Text = String.Join("\n\t,", tablefields.Items.Select(a=>a.ToString()).ToArray()); 
+0

Выберите не будет – user3788757

+0

@ user3788757 Почему? какой тип товаров? – Arie

+0

его из базы данных – user3788757

2

Я хотел бы использовать String.Join. Так как вы прокомментировали другой ответ, что tablefields является ListBox это работает:

var strings = tablefields.Items.Cast<object>().Select(o => o.ToString()); 
richTextBox1.Text = String.Join(Environment.NewLine + ",", strings); 

Испытано с этой выборки данных:

tablefields.Items.AddRange(new ListBox.ObjectCollection(tablefields, new[]{"id","spid","charge_type_rcd","name_e","active_status"})); 

Выход:

id 
,spid 
,charge_type_rcd 
,name_e 
,active_status 

Вы можете также использовать StringBuilder который является менее читаемым, но может быть более эффективным, если у вас много, много предметов:

StringBuilder sb = new StringBuilder(); 
foreach (var item in tablefields.Items) 
    sb.AppendLine(item.ToString()).Append(','); 
if (sb.Length > 0) sb.Length--; // to remove the last comma 
richTextBox1.Text = sb.ToString(); 
+0

данные пришли из базы данных кстати. :) – user3788757

+0

@ пользователь3788757: это не имеет значения, не так ли? Я предположил, что 'ListBox' содержит' Objects', поэтому я использовал 'ToString' для создания строк. Обратите внимание, что я отредактировал свой ответ, чтобы предоставить метод «StringBuilder», который может быть более эффективным (если вы говорите, более 1000 элементов). –

+0

ладно спасибо, так теперь, где я буду помещать код? – user3788757

Смежные вопросы