c#可以取得指定字符后的文字吗?在遇到一串指定字符后又不取得

newpowersky 2014-08-06 09:21:11
发站: 信阳       武昌分区( 746)     武汉局.武    河南.豫(41) 国铁正式营业线[  0]
到站: 都拉营 贵阳分区(1478) 成都局.成 贵州.贵(52) 国铁正式营业线[ 0]
经由:
径路类型:整车

全程:1543, 计费:362, 基金:362, 杂费:0

分界站数据:
1 蒲圻(PQN 975) 362公里 大 出 武昌-> 长沙
2 百亩井(BOQ 1588) 774公里 小 出 长沙-> 怀化
3 大龙(RPW 1981) 1191公里 大 入 怀化-> 贵阳

经由分区数据:
1 武昌 ( 746) 362公里
2 长沙 (1268) 412公里
3 怀化 (1269) 417公里
4 贵阳 (1478) 352公里
像这样的数据如果有很多的话,我可以只取得发站后的站名,到站后的站名,再把分界站数据:后面的蒲圻,百亩井, 大龙排成一排吗?
像这样出来: 信阳 都拉营 蒲圻,百亩井, 大龙排。其余的数据对我没用

string readpath = ".\\wel.txt";
string writepath ="e:\\dfz.txt";
String sb= "";
StreamReader sf = new StreamReader(readpath, System.Text.Encoding.Default);
StreamWriter sw =new StreamWriter(writepath);

string[] rs;
string dz,fz,line;
while((line=sf.ReadLine())!=null){
if(line.Substring(0,5).Equals("发站:")){
fz= line.Substring(5, 8);
}
if (line.Substring(0, 5).Equals("到站")) {
dz= line.Substring(5, 8);
}
while(line.Substring(0,10).Equals("分界站数据")){
if (line.Substring(0, 10).Equals("经由分区数据"))
{
break;
}
else {
//中间如何得到分界站数据还没想出来!

}

}
sb = fz + " " + dz + " ";//这里说我使用了没有赋值的变量,但是我得取到后才有值啊,

}
这种不行,因为不知道分界数据有多少行!有取得指定字符后的数字吗?
...全文
156 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2014-08-07
  • 打赏
  • 举报
回复
引用 3 楼 newpowersky 的回复:
[quote=引用 2 楼 duanzi_peng 的回复:] 使用txt储存并读取这种复杂的,没有规律性文本,确实很蛋疼。 不如用xml或者json来储存容易些。
可以提供些思路和资料吗?[/quote] 只是简单的 将上边的数据储存成xml文件格,每个节点对应具体属性值。然后再读取。
於黾 2014-08-07
  • 打赏
  • 举报
回复
txt随意性太大了 一般往txt里存数据应该是每组数据一行,按行读出来 如果这个txt的格式是你指定的,你应该考虑定义的更加规则一些,方便解析 或者可以考虑使用xml或excel来放这种数据
newpowersky 2014-08-06
  • 打赏
  • 举报
回复
引用 4 楼 gwhzh 的回复:
发站,到站,分界站数据是固定的话,就可以找到发站:空格,取后面的。到站,空格,取后面的。分界站,一行一个取序号后面的。
   string readpath = ".\\wel.txt";
            string writepath ="e:\\dfz.txt";
      
            StringBuilder sb = new StringBuilder();
            String startfz = "发站: ", endfz = " ";
            string startdz = "到站: ", enddz = " ";
            
            StreamReader sf = new StreamReader(readpath, System.Text.Encoding.Default);
            StreamWriter sw =new StreamWriter(writepath);
            
            string[] rs;
            string dz,fz,line;
            while((line=sf.ReadLine())!=null){
                int Indexoffza = line.IndexOf(startfz);
                int Indexoffzb = line.IndexOf(endfz);
                if (Indexoffza != -1)
                {
                    Ru = line.Substring(Indexoffza + 3, Indexoffzb - Indexoffza - 1);
                  
                }

                int Indexofdza = line.IndexOf(startdz);
                int Indexofdzb = line.IndexOf(enddz);

                if (Indexofdza != -1)
                {
                    Ru1 = line.Substring(Indexoffza + 3, Indexoffzb - Indexoffza - 1);
                 
                }
                sw.Write(Ru + " " + Ru1 + "\r\n");
                             
            }
写入文本
 信 : 鹤
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
 信 : 都
这个结果吐血,看样子搞不成气了
gwhzh 2014-08-06
  • 打赏
  • 举报
回复
发站,到站,分界站数据是固定的话,就可以找到发站:空格,取后面的。到站,空格,取后面的。分界站,一行一个取序号后面的。
newpowersky 2014-08-06
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
使用txt储存并读取这种复杂的,没有规律性文本,确实很蛋疼。 不如用xml或者json来储存容易些。
可以提供些思路和资料吗?
exception92 2014-08-06
  • 打赏
  • 举报
回复
使用txt储存并读取这种复杂的,没有规律性文本,确实很蛋疼。 不如用xml或者json来储存容易些。
wangnaisheng 2014-08-06
  • 打赏
  • 举报
回复

string stra = "abcdefghijk"; 
string strtempa = "c"; 
string strtempb = "j"; 
//我们要求c---g之间的字符串,也就是:defghi //求得strtempa 和 strtempb 出现的位置:
 int IndexofA = stra.IndexOf(strtempa); 
int IndexofB = stra.IndexOf(strtempb); 
string Ru = stra.Substring(IndexofA + 1, IndexofB - IndexofA -1); 
参考====c#中怎样截取两特定字符之间的字符串 http://zhidao.baidu.com/link?url=5RPo610Rf9uq6_y9vDZV94ByN081TqumtiFraXJr3CVg4qcDHl0sNp2yIvvL2jZwyA2xnmqHsZjRN9CPtEf5wq

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧