如何在c#中按给定分隔符拆分文本文件

时间:2013-11-09 08:12:21

标签: c# split

我遇到了一个程序问题。我必须读取一个文件*.txt并将其拆分为给定的字符,例如:该文件包含:

rotbrow
yabector
gamerue

因此,当我插入a的给定分隔符时,它应该将这些行分开:

rotbrow
ya
bector
ga
merue

但它没有a:

就像这样打印出来
rotbrow
ya
bector
ga
merue

这是我正在使用的代码:

foreach (string line in  File.ReadAllLines(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\ArchivoaSeparar.txt"))
{
    string[] parts = line.Split(cadenaTextBox.Text.ToCharArray());

    foreach (string item in parts)
    {
        listBox1.Items.Add(item);
    }
}

我没有说明为什么不显示给定的分隔符(las示例中的a),我必须对输入的任何文本和给定的分隔符执行此操作。

希望你能帮助我。

2 个答案:

答案 0 :(得分:2)

在某个分隔符上拆分字符串时,该分隔符不是结果部分的一部分。如果你想看到“a”,你需要手动添加它(在每个部分执行最后一个)。

顺便说一句:ToCharArray不会产生你想要的效果:如果你输入“或”作为分隔符,那么“r”和“o”都是独立的分隔符,所以无论它们是否分裂它们在一起(字符串将分成单个“o”并在“ro”或“或”上分割为double。)

答案 1 :(得分:1)

分割操作后,您不会将delimater作为返回值的一部分。 你可以有额外的逻辑来添加如下:

foreach (string line in File.ReadAllLines(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\ArchivoaSeparar.txt"))
            {
                String checkItem = cadenaTextBox.Text.ToString();
                string[] parts = line.Split(checkItem.ToCharArray());

                foreach (string item in parts)
                {
                    listBox1.Items.Add((line.Contains(checkItem) ? item + checkItem : item));
                }
            }