将行绑定到字符串列表中

时间:2011-12-01 23:20:49

标签: c# string concatenation

我正在使用一个文本文件(已加载到每个新行的列表中)..它的格式是这样的:

***CP6***
UNIT, PARTS
    some data here
    some more data here
        more data1
        more data2
    etc111
        etc222
    etc333
    etc444
    etc555
UNIT, PARTS
    11111
    22222
        2.1
        2.2
        2.3
    33333
and so on....

我想抓住每个UNIT, PARTS之间的线条并将其连接成一行,如下所示:

theList[0] = UNIT, PARTS\n\tsome data here\n\tsome more data here\n\t\tmore data1\n\t\tmore data2\n\tetc111\n\t\tetc222\n\tetc333\n\tetc444\n\tetc555
theList[1] = UNIT, PARTS\n\t11111\n\t22222\n\t\t2.1\n\t\t2.2\n\t\t2.3\n\t33333
theList[n] = UNIT, PARTS\n\t.......

任何人都可以帮我吗?

编辑:

数据在List中。所以我在考虑像foreach (var item in fileLineList) ...

这样的东西

EDIT2:

我一直在乱搞并想出这个...但它似乎没有用到我的意图......

                foreach (var line in tempList1)
                {

                    if (isUnitPart == false)
                    {
                        if (line.ToUpper().Contains("\"UNIT\",\"PARTS\""))
                            isUnitPart = true;
                    }
                    else
                    {
                        if (line.ToUpper().Contains("\"UNIT\",\"PARTS\""))
                            isUnitPart = false;
                    }

                    if (isUnitPart == true)
                        concattedUnitPart = concattedUnitPart + line;

                    else
                    {
                        theList.Add(concattedUnitPart + Environment.NewLine);
                    }
                }

3 个答案:

答案 0 :(得分:1)

myString.Split(new string[]{"UNIT, PARTS"}, StringSplitOptions.None)会给你

theList[0] = \n\tsome data here\n\tsome more data here\n\t\tmore data1\n\t\tmore data2\n\tetc111\n\t\tetc222\n\tetc333\n\tetc444\n\tetc555
theList[1] = \n\t11111\n\t22222\n\t\t2.1\n\t\t2.2\n\t\t2.3\n\t33333
theList[n] = \n\t....

这可能是你想要的:)

答案 1 :(得分:1)

使用ReadAllText获取单个string中的所有行。

修改:如果您的所有数据都在列表中:

string[] input = IO.File.ReadAllLines(path); //or a List<String>  
string[] delimiter = new[] { "UNIT, PARTS" };
string text = String.Join(Environment.NewLine, input);
var lines = from word in text.Split(delimiter, StringSplitOptions.None)      
            select line = (delimiter[0] + word)

您需要在结果字前加上分隔符本身,因为String.Split会从返回的数组中删除分隔符。

http://msdn.microsoft.com/en-us/library/c1bs0eda.aspx

答案 2 :(得分:1)

var units = new Regex("UNIT, PARTS",RegexOptions.Multiline)
          .Split(myString)
           .Where(c=> !string.IsNullOrEmpty(c)).ToArray();