第1个回答 2012-12-29
这个问题其实比较简单,如果你读取的文本文件很大的话,我建议用文件流的方式读取,如果小的话可以不用,具体实现是:
path="你的文本文件的路径";
//定义一个全局变量的数组,用于接收一会儿切割的字符数据
string[] strResult=null;
//读取每一行数据,存放到数组中
string[] strTxt=File.ReadAllLines("path");
//遍历数组
for(int i=0;i<strTxt.length;i++)
{
//切割每一行的数据,按照#start与#end结尾,并移除多余的空格
string[] strSplit=str.Split(new string[] { "#start", "#end" }, StringSplitOptions.RemoveEmptyEntries);
string str="";
循环切割完毕的数组,连接为字符串
for(int j=0;j<strSplit.length;j++)
{
//切割完的字符串,如果文本中每一行字符串比较多的话建议用sb,效率比较高
str+=strSplit[j];
}
//将切割完的字符串添加到字符串数组中
strResult[i]=str;
}
//好了,strResult数组中存放的就是你的结果了
---------------------------------华丽的分割线,补充---------------------------
其实更简单的方式就是通过正则表达式,匹配#start #end,然后再填充到字符串数组中,先匹配出#start XXX #end这个东西,然后用$将XXX拿出来再添加到数组中就可以了,好了,到此结束
第2个回答 2012-12-29
private List<string> GetStartAndEndString()
{
List<string> strList = new List<string>();
byte[] bytes = File.ReadAllBytes("c:\\a.txt");
if (bytes != null && bytes.Length > 0)
{
string fileStr = System.Text.Encoding.Default.GetString(bytes);
MatchCollection mcs = System.Text.RegularExpressions.Regex.Matches(fileStr, "#start(?<str>[\\s\\S]*?)#end");
if (mcs.Count > 0)
{
foreach (Match m in mcs)
{
strList.Add(m.Groups["str"].Value);
}
}
}
return strList;
}本回答被网友采纳