C#读取txt文件,一行行的读取其内容,截取特定字符放数组里。

如上图txt文件,我一行行读取如何将以#start开头,#end结尾的字符串放到字符串数组里。
即实现下列效果 S[0]="人生若只如初见"
S[1]="我的中国心"
S[2]="的思考的紧身裤\n大苏打饭店"

希望大虾给出源码。

第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;
}本回答被网友采纳
相似回答