我正在使用一个文本文件(已加载到每个新行的列表中)..它的格式是这样的:
***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)
...
我一直在乱搞并想出这个...但它似乎没有用到我的意图......
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);
}
}
答案 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
会从返回的数组中删除分隔符。
答案 2 :(得分:1)
var units = new Regex("UNIT, PARTS",RegexOptions.Multiline)
.Split(myString)
.Where(c=> !string.IsNullOrEmpty(c)).ToArray();