C#语法 - 删除最后一次出现的';'来自split

时间:2016-08-31 15:30:36

标签: c# .net string arraylist split

我有一个存储在ArrayList中的字符串列表。我希望每次出现&#39 ;;'将它们分开。问题是,每当我尝试使用MessageBox显示它们时,都会显示多余的空间或不必要的值。

示例输入(变量= a):

Arial;16 pt;None;None;None;None;None;None;FF0000;None;100;Normal;None;Normal;

下面是我用来拆分它们的一行代码:

string[] display_document = (a[0] + "").Split(';');

要显示的代码:

foreach (object doc_properties in display_document)
{
   TextBox aa = new TextBox();
   aa.Font = new Font(aa.Font.FontFamily, 9);
   aa.Text = doc_properties.ToString();
   aa.Location = new Point(pointX, pointY);
   aa.Size = new System.Drawing.Size(80, 25);
   aa.ReadOnly = true;

   doc_panel.Controls.Add(aa);
   doc_panel.Show();
   pointY += 30;

}

显示的输出如下: enter image description here

如何删除该分号的最后一次出现?我真的需要帮助解决这个问题。非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

最简单的方法是检查输入是否以“;”结尾在拆分它之前,如果是这样,删除最后一个字符?示例代码:

string a = "Arial;16 pt;None;None;None;None;None;None;FF0000;None;100;Normal;None;Normal;";
        if (a.EndsWith(";"))
        {
            a = a.Remove(a.LastIndexOf(";"));
        }
        //Proceed with split

答案 1 :(得分:0)

如果没有添加空格字符且输入为字符串,则拆分不会打印最后一个分号。

我不知道为什么你更喜欢数组列表(可能是这种奇怪行为的原因)但是如果你可以将你的输入用作字符串,你可以试试

string a = "Arial;16pt;None;None;None;None;None;None;FF0000;None;100;Normal;None;Normal;";
string[] display_document = a.Split(';');
foreach (object doc_properties in display_document)
{
    //The rest of your code
}