字符串解析

问题描述

privatevoidbutton1_Click(objectsender,EventArgse){OpenFileDialogofd=newOpenFileDialog();ofd.Filter="(*.*)|*.*";ofd.RestoreDirectory=true;if(ofd.ShowDialog()==DialogResult.OK){textBox6.Text=ofd.FileName;FileStreamfs=newFileStream(ofd.FileName,FileMode.Open,FileAccess.Read);StreamReadersr=newStreamReader(fs);try{ofd.OpenFile();stringline=sr.ReadLine();while(line!=null){textBox3.Text+=line+"n";line=sr.ReadLine();}}catch(Exceptionex){MessageBox.Show(ex.Message.ToString());}finally{sr.Close();fs.Close();}}}现在这个代码我打开了一个txt文件,并把它完全读出来了,全放在了textbox3里,现在我打开的这个文档里的字符串内容都是如下的,大概1000多个下面这样的字符串,怎么改红色的代码,给这些字符串分割出来(我现在读出来的是全部的,但是这里有好多没用的数据,我要写的文件只取我想要的数据),让我重新写一个文件.是不是while判断里需要该一下?$aaa,3603.0134,N,12017.8616,E,000.1,269.4,2,000.1,1,1,325.3,2,0,02.3,202,02.4,167,02.0,167,02.2,(没用的)(这个有用)$aaa,3603.0128,N,12017.8613,E,000.1,269.4,2,000.1,1,1,325.3,2,0,02.0,191,02.1,156,02.1,160,02.2,

解决方案

解决方案二:
看你读完之后又拼接,那你完全没必要一行行读取啊,直接sr.ReadToEnd()方法将整个txt内容读取出来不就行了至于后面的有用没用看不懂……
解决方案三:
我现在这个思路不知道对不对?我先stringline=sr.ReadLine();(这个是不是读取了全部数据?我是不是应该只读取第一行的数据,然后做个循环?)stringa=line.substring(0,5);给a赋值取第一行的前5个字符?stringb=line.substring(6.10);给b赋值取第一行的第6到第10个字符?然后写文件的时候给a,b....XXX写到一起重新生成?
解决方案四:
$aaa,3603.0134,N,12017.8616,E,000.1,269.4,2,000.1,1,1,325.3,2,0,02.3,202,02.4,167,02.0,167,02.2,(没用的)(这个有用)$aaa这几个字符,我不取,就是没用的意思000.1这几个字符我要用,怎么取出来?是不是得判断这一行总的长度的,然后再取位置?
解决方案五:
按逗号切割line,000.1在下标5处
解决方案六:
如果你这样子的话,一行行读取是对的然后看你没用的前面有5个逗号,然后后面我也不了解你要取几个数据那你可以通过正则来匹配^(?:[^,]*,){5}([^,]*,){3}红色部分代表到E位置正好有5个逗号,后面就看你要几个了数字了,如果你要后面所有的话,那你可以将蓝色部分改成.*$
解决方案七:
能不用正则的吗?就是先定义str.length,然后通过substring提取的?正则的,我有点看不懂
解决方案八:
"(没用的)(这个有用)"你自己知道,别人可能理解有误,你将那串字符串中有用的,也就是你要取出的用其他颜色标出来。
解决方案九:
你都没有明确的规则,怎么筛选数据???
解决方案十:
正则只是简单点,不用正则,你就要循环判断,的indexstringstr=@"";intcount=0;intindex=0;while(true){index=str.IndexOf(str,index);if(index>=0){count++;if(count>=5){//这时候对应的index就是你那个0.1前面一个逗号的index了break;}}}

解决方案十一:
引用1楼starfd的回复:

看你读完之后又拼接,那你完全没必要一行行读取啊,直接sr.ReadToEnd()方法将整个txt内容读取出来不就行了至于后面的有用没用看不懂……

好像是用逗号分割
解决方案十二:
本帖最后由 starfd 于 2015-09-15 12:46:13 编辑
解决方案十三:
IndexOf第一个参数应该是逗号,你这个的确有规则啊绿色部分就是字符串啊……对应你读取出来的每行字符串其实还是正则更简单……
解决方案十四:
textBox3.Text+=string.Join(",",line.Split(',').Where((p,i)=>i==5||i==11));

解决方案十五:
我贴出来的代码部分如何只读取第一行,并开始分析?我现在代码是全部读出来放到textBox3里去了,怎么只读第一行,然后给他做个循环。
解决方案:
有后续处理为何要用textbox,richtextbox或listbox不是更好richtextbox:foreach(stringsinrichtextbox.Lines){//....}
解决方案:
可通过richtextbox.Lines按索引取,或遍历。
解决方案:
引用12楼starfd的回复:

IndexOf第一个参数应该是逗号,你这个的确有规则啊绿色部分就是字符串啊……对应你读取出来的每行字符串其实还是正则更简单……

stringstr=@"";intcount=0;intindex=0;while(true){index=str.IndexOf(str,index);if(index>=0){count++;if(count>=5){//这时候对应的index就是你那个0.1前面一个逗号的index了break;}如何给红色部分,直接锁定到打开的第一行文本?
解决方案:
这个就是你的line
解决方案:
这样是否可行呢?stringstr=@"";//我打开的txt文本的第一行;string[]dt=line.Split(newchar[]{','},StringSplitOptions.RemoveEmptyEntries);然后再写入新文件的时候直接取dt[6]
解决方案:
stringstr="$aaa,3603.0134,N,12017.8616,E,000.1,269.4,2,000.1,1,1,325.3,2,0,02.3,202,02.4,167,02.0,167,02.2,"string[]bit=str.Split(',');stringno1=bit[5].ToString();//你要的stringno2=bit[11].ToString();//你要的

解决方案:
不错,感谢楼主分享!!
解决方案:
不错哦,有助于刚入手的新手学习,谢谢分享哦

时间: 2024-09-17 03:33:09

字符串解析的相关文章

在JS中将JSON的字符串解析成JSON数据格式一般有两种方式

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用jQuery的each方法来遍历 用jQuery解析JSON数据的方法,作为jQuery异步请求的传输对象,jQuery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里首先

获取字符串中某一个字段的数据,GetValueFromStr;拓展字符串解析parse_string

gps数据格式为:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A* /********************************************************************** *版权所有 (C)2015, Wuyq. * *文件名称: GetValueFromStr.c *内容摘要:用于演示从gps数据字符串中获取相应的内容 *其它说明:无 *当前版本: V1.0 *作

c语言-一个字符串解析问题,如cmd1=str1&cmd2=str2

问题描述 一个字符串解析问题,如cmd1=str1&cmd2=str2 使用C语言解析如上的字符串,如cmd1=str1&cmd2=str2,cmd的个数和顺序不定 解决方案 1楼大神的答案挺不错的,我的思考是先找到&符号,切割一个出一个cmd=value然后找=符号.因为cmd的个数和顺序不定,最好你把cmd切换为整型的数字,使用switch...case去赋值. 解决方案二: http://cboard.cprogramming.com/c-programming/13752-

复杂字符串解析赋值到对象中

问题描述 复杂字符串解析赋值到对象中 字符串格式如下: { { {属性值11} {属性值12}- } { {属性值21} {属性值22}- } - } 属性值11.属性值12...是对象的属性 将字符串解析后封装到 List中,上述字符串如何解析 解决方案 你通过括号匹配来获取可以,还可以通过正则,这个更方便

求大神-如何获取后台数据库里面的数据,返回JSON字符串,并把JSON字符串解析添加到ListView中

问题描述 如何获取后台数据库里面的数据,返回JSON字符串,并把JSON字符串解析添加到ListView中 如何获取后台数据库里面的数据,返回JSON字符串,并把JSON字符串解析添加到ListView中 解决方案 写一个http接口,组织好json数据,客户端接收,可以用gson直接转成对应的对象,listview需要一个List数据源,你把后台传来的数据放到list中,然后adapter的getview中处理显示 解决方案二: Newtonsoft.Json.dll有你想要的 解决方案三:

java json字符串解析,获取json字符串中数组的值

问题描述 java json字符串解析,获取json字符串中数组的值 {"arr":["ipAddr","installationSite","imineSystemId","valid"],"login":0,"password":"","purview":"","userId":0,&

javascript-asp.net中如何把xml字符串解析成表格呈现在网页中?(最好有实现代码)

问题描述 asp.net中如何把xml字符串解析成表格呈现在网页中?(最好有实现代码) xml字符串名称为strResponseXml,内容如下: <?xml version='1.0'?>013海淀区0>343朝阳区3>783密云区7>9103海淀区9> 现想通过网页上的一个按钮事件把以上字符串解析成如下的表格形式:FID ID KIND NAME0 1 3 海淀区3 4 3 朝阳区7 8 3 密云区9 10 3 海淀区

ios-IOS swift 字符串解析成NSArry类型

问题描述 IOS swift 字符串解析成NSArry类型 [{"Android":[{"ID":31,"TN":"天天","Date":"2015-03-17","Des":"315活动"},{"ID":32,"TN":"天天","Date":"2015-0

java String字符串解析实例整理

字符串解析类  代码如下 复制代码 StringTokenizer tokenizer = new StringTokenizer(number, ",");         boolean bool = true;         while (tokenizer.hasMoreTokens()) {             try {                 Double.valueOf(tokenizer.nextToken());             } catch

php 中parse_str实现查询字符串解析到变量中

parse_str()函数可实现把字符串解析到变量中,这意味着实现了字符串与变量之间的一种转换机制,在与客户端数据传递的过程中,数据是通过字符串的形式传递,如GET请求,然后在服务器端通过$_GET/$_POST等全局变量实现字符串与变量的转换,如:http://www.liuhui.info/?index.php?var1=1&var2=2,请求后服务端可使用$_GET['var1']的方式获取var1=1&var2=2这一段字符串转换成变量.parse_str()函数可实现用样的功能,