如何在c#中的文本框中收集所有列表框项

时间:2014-05-04 06:36:05

标签: c#

我有一个列表框,其中收集的电子邮件格式为example@gmail.com。

我想通过点击按钮在文本框中传输这些内容。

我想要没有“@”的项目和所有用“#”分割的项目。

例如......我有a@mail.com b@mail.com c@mail.com等等

现在点击一个按钮,所有项目必须位于文本框中,如#b#c#.....等等 // ------------------------------------------------ ----------------------------------- 我知道如何将所有项目原样转移到文本框。

for(int i = 0; i<listBox1.Items.Count; i++)
{
if((i +1) < listBox1.Items.Count)
textBox1.Text += listBox1.Items[i] + ", ";
else
textBox1.Text += listBox1.Items[i];
}

// --------------------------------------------- ------------------------------------- 如何在没有@的文本框中获取所有格式为example@mail.com的项目,并且每个项目用#分隔。

谢谢

4 个答案:

答案 0 :(得分:3)

 foreach (string item in listBox1.Items)
      textBox1.Text += item.Contains("@") ? string.Format("{0}#", item.Split('@')[0]) : string.Empty;

答案 1 :(得分:1)

像这样?

 public MainWindow()
    {
        InitializeComponent();
        lbSource.Items.Add("example1@yahoo.com");
        lbSource.Items.Add("example2@gmail.com");
        lbSource.Items.Add("example3@hotmail.com");
        lbSource.Items.Add("example4@live.com");


    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        txtShow.Text = "";
        foreach (string item in lbSource.Items)
        {
            string tmp = item.Substring(0, item.IndexOf('@'));
            txtShow.Text += tmp + "#";
        }
    }

答案 2 :(得分:0)

textBox1.Text="";

for(int i = 0; i<listBox1.Items.Count; i++)
{

textBox1.Text += listBox1.Items[i].toString().Split(new Char [] {'@'})[0] + "#";

}

<强>以下

listBox1.Items[i].toString().Split(new Char [] {'@'})[0]将只返回@ a@mail.com a左侧的字符串a#b#c#

因此输出将如您所愿,即

示例{{1}}

答案 3 :(得分:0)

使用下面的IndexOf方法

        string output = string.Empty;
        foreach (string email in listBox1.Items)
        {
            int atIndex = email.IndexOf('@');
            output = output + email.Remove(atIndex) + "#";

        }
       textBox1.Text = output;