我需要写一个工具,从一个txt文件中抽取字符
如:
//***  test.txt  ****************************************
【自然地理特点】四川省位于中国西南,地当长江上游,介于东经92°21′~108°12′和北纬26°03′~34°19′之间,东西长1075余公里,南北宽900多公里。东连重庆市,南邻滇、黔,西接西藏,北界青、甘、陕三省。面积48.5万平方公里,次于新疆、西藏、内蒙和青海,居全国第五位。
四川地貌东西差异大,地形复杂多样。位于我国大陆地势三大阶梯中的第一级和第二级,即处于第一级青藏高原和第二级长江中下游平源的过渡带,高差悬殊,西高东低的特点特别明显。西部为高原、山地、海拔多在4000米以上;东部为盆地、丘陵,海拔多在1000~3000米之间。全省大致可分为四川盆地和川西高原两大部分。
东部四川盆地是我国四大盆地之一,面积16.5万平方公里。盆地四周为邛崃山、岷山、大巴山等山地和贵州山地环绕,重峦叠嶂。盆地中部海拔400~800米,地势微向南倾斜,岷江、沱江、嘉陵江从北部山地向南流入长江。气候温暖湿润,冬暖夏热,大部分地区年降水量900~1200毫米,多亚热带植物。西部为川西高原,海拔3000~5000米,山高谷深,高山峡谷间大江如带。山河呈南北走向,有沙鲁里山、大雪山、峨眉山等和金沙江、雅砻江、大渡河等。气候高寒,植物呈垂直分布,以针叶林和草地为主。
【历史地理特点】四川省简称川或蜀。在商周时期,四川地区建立了两个国家:一个是在今川西地区,由古蜀族为中心建立的蜀国;另一个是在今川东地区(包括今重庆市),由古巴族为中心建立的巴国。所以,四川地区古称“巴蜀”。公元前316年,秦灭巴蜀,置巴蜀二郡,汉属益州,唐属剑南道及山南东、西等道,宋置川陕路,后分置益、梓、利、夔四路,总称四川路,至此始有四川之名。元设四川行中书省,简称“四川行省”,明置四川布政使司,辖区内还包括今贵州省遵义和云南东北部及贵州西北部。清为四川省,并对川、滇、黔3省省界进行较大调整,基本确定了现在四川的南部省界。
民国时期,今四川西部分治为西康省,1955年西康省划归四川。1997年将四川分为今重庆直辖市和四川省,川渝分治。目前,四川省辖18个市,3个民族自治州。
自古以来四川就享有“天府之国”的美誉。优越的地理条件和经济条件,使四川成为中国经济开发最早的地区之一。据考古证明,旧石器时期今四川境内就有人类活动,在距今4000~5000年时期,成都平原地区是长江上游区域文化的起源中心。其中广汉三星堆和成都金沙遗址,是古蜀国政治经济和文化中心。农业文明和城市文明的很早兴起,使历史上四川的农业、冶金、丝织、建筑等都得到一定发展。
//*********************************************需要从提出【 】之间的字符,存为文件名,提出】 【之间的内容作为文件内容抽取后的结果应该生成两个txt文件//***  自然地理特点.txt  ****************************************
四川省位于中国西南,地当长江上游,介于东经92°21′~108°12′和北纬26°03′~34°19′之间,东西长1075余公里,南北宽900多公里。东连重庆市,南邻滇、黔,西接西藏,北界青、甘、陕三省。面积48.5万平方公里,次于新疆、西藏、内蒙和青海,居全国第五位。
四川地貌东西差异大,地形复杂多样。位于我国大陆地势三大阶梯中的第一级和第二级,即处于第一级青藏高原和第二级长江中下游平源的过渡带,高差悬殊,西高东低的特点特别明显。西部为高原、山地、海拔多在4000米以上;东部为盆地、丘陵,海拔多在1000~3000米之间。全省大致可分为四川盆地和川西高原两大部分。
东部四川盆地是我国四大盆地之一,面积16.5万平方公里。盆地四周为邛崃山、岷山、大巴山等山地和贵州山地环绕,重峦叠嶂。盆地中部海拔400~800米,地势微向南倾斜,岷江、沱江、嘉陵江从北部山地向南流入长江。气候温暖湿润,冬暖夏热,大部分地区年降水量900~1200毫米,多亚热带植物。西部为川西高原,海拔3000~5000米,山高谷深,高山峡谷间大江如带。山河呈南北走向,有沙鲁里山、大雪山、峨眉山等和金沙江、雅砻江、大渡河等。气候高寒,植物呈垂直分布,以针叶林和草地为主。
//***************************************************************//***  历史地理特点.txt  ****************************************
四川省简称川或蜀。在商周时期,四川地区建立了两个国家:一个是在今川西地区,由古蜀族为中心建立的蜀国;另一个是在今川东地区(包括今重庆市),由古巴族为中心建立的巴国。所以,四川地区古称“巴蜀”。公元前316年,秦灭巴蜀,置巴蜀二郡,汉属益州,唐属剑南道及山南东、西等道,宋置川陕路,后分置益、梓、利、夔四路,总称四川路,至此始有四川之名。元设四川行中书省,简称“四川行省”,明置四川布政使司,辖区内还包括今贵州省遵义和云南东北部及贵州西北部。清为四川省,并对川、滇、黔3省省界进行较大调整,基本确定了现在四川的南部省界。
民国时期,今四川西部分治为西康省,1955年西康省划归四川。1997年将四川分为今重庆直辖市和四川省,川渝分治。目前,四川省辖18个市,3个民族自治州。
自古以来四川就享有“天府之国”的美誉。优越的地理条件和经济条件,使四川成为中国经济开发最早的地区之一。据考古证明,旧石器时期今四川境内就有人类活动,在距今4000~5000年时期,成都平原地区是长江上游区域文化的起源中心。其中广汉三星堆和成都金沙遗址,是古蜀国政治经济和文化中心。农业文明和城市文明的很早兴起,使历史上四川的农业、冶金、丝织、建筑等都得到一定发展。
//***************************************************************麻烦高手指点一下,如果能粘点代码,不胜感激

解决方案 »

  1.   

    我现在的问题主要是不知道如何遍历txt文件,抽出指定字符间的数据
      

  2.   


    using System.Text.RegularExpressions;StreamReader vStreamReader = new StreamReader(
        @"C:\temp\temp.txt", Encoding.Default);
    foreach (Match vMatch in Regex.Matches(vStreamReader.ReadToEnd(),
        "【(?<FileName>[^】]+)】(?<Text>[^【]+)"))
    {
        Console.WriteLine(vMatch.Result("${FileName}"));
        Console.WriteLine(vMatch.Result("${Text}"));
        /*
        StreamWriter vStreamWriter = new StreamWriter(
            @"c:\temp\" + vMatch.Result("${FileName}") + ".txt", 
            false, Encoding.Default);
        vStreamWriter.Write(vMatch.Result("${Text}"));
        vStreamWriter.Close();
        */
    }
    vStreamReader.Close();
      

  3.   


    using System.Text.RegularExpressions;StreamReader vStreamReader = new StreamReader(
        @"C:\temp\temp.txt", Encoding.Default);
    foreach (Match vMatch in Regex.Matches(vStreamReader.ReadToEnd(),
        "【(?<FileName>[^】]+)】(?<Text>[^【]+)"))
    {
        Console.WriteLine(vMatch.Result("${FileName}"));
        Console.WriteLine(vMatch.Result("${Text}"));
        /*
        StreamWriter vStreamWriter = new StreamWriter(
            @"c:\temp\" + vMatch.Result("${FileName}") + ".txt", 
            false, Encoding.Default);
        vStreamWriter.Write(vMatch.Result("${Text}"));
        vStreamWriter.Close();
        */
    }
    vStreamReader.Close();
      

  4.   


    StreamReader objStreamReader=new StreamReader(File.Open(路径,FileMode.Open,FileAccess.Read,FileShare.Read),System.Text.Encoding.GetEncoding("GB2312"));
    string HLine=""; 

    HLine=objStreamReader.ReadToEnd();
    然后可以在HLine中找【的位置int i1=HLine.IndexOf("【"),然后再找到 】位置【的位置int i2=HLine.IndexOf("】"),,然后取他们之间的字符,HLine.Substring(i1+1,i2-1);然后从i2位置吧前面的都删除,继续从下面的字符串中继续找
      

  5.   

    文件不大就用正则using System.Text.RegularExpressions;StreamReader vStreamReader = new StreamReader(
        @"C:\temp\temp.txt", Encoding.Default);
    foreach (Match vMatch in Regex.Matches(vStreamReader.ReadToEnd(),
        "【(?<FileName>[^】]+)】(?<Text>[^【]+)"))
    {
        Console.WriteLine(vMatch.Result("${FileName}"));
        Console.WriteLine(vMatch.Result("${Text}"));
        /*
        StreamWriter vStreamWriter = new StreamWriter(
            @"c:\temp\" + vMatch.Result("${FileName}") + ".txt", 
            false, Encoding.Default);
        vStreamWriter.Write(vMatch.Result("${Text}"));
        vStreamWriter.Close();
        */
    }
    vStreamReader.Close();
      

  6.   

    多谢zswang,您的代码帮我完成了最困难的一步
    多谢thinkingforever ,您给了我一个思路