高分:c#高手请进richtextbox中如何提取数据

richtextbox中如何提取数据,如下图所示,我要提取[001]还有IP,和T=24.5.(取24.5)H=43.89(取43.89)这一些有效数据,其它的都不要,在... richtextbox中如何提取数据,如下图所示,我要提取[001]还有IP,和T=24.5.(取24.5)H=43.89(取43.89)这一些有效数据,其它的都不要,在另一个richtextbox显示。注意,这一个richtextbox数据是每隔1秒会不断从传感器传过来的。我要隔10秒在另一个richtextbox显示一次,并把这几个有效数据写入表。求高手解答 展开
 我来答
artattack07
2014-08-26 · TA获得超过179个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:190万
展开全部
按照你说每隔1s会有一行数据进来,看你的数据的特点,只要有T和H就必然有MyID,那你可以首先通过IndexOf函数判断本行数据是否包含MyID,如果是那么开始分离数据,不是得话就不管。

分离数据001和IP是很简单的,试用SubString函数就可以截取字符串中的某个部分,
随后通过Split函数,以分号为分隔符,可以吧该行拆为5段,T的索引是2,H的索引是3
然后通过Split函数,以等号为分隔符,可以把T与24.5,H与43.89分开,再次索引1就可以得到数据。
更多追问追答
追问
能否具体一些,程序如何写,谢谢
追答
string con="From[001][117.136.11.1][10:22:22]:MyID=001;Command=Data;T=24.50;H=44.12;";
//con为保存最新行字符串的变量,改为你自己的就行
string num,IP,T,H; 
//判断该行数据是否有所需数据 
if (con.IndexOf("MyID")!=-1)
{
//分割 
 string[] FirstSplit=con.Split('[');
 string[] SecondSplit=FirstSplit[3].Split(';');

//取得数据  
 num=FirstSplit[1].SubString(0,FirstSplit[1].Length-1);
 IP=FirstSplit[2].SubString(0,FirstSplit[2].Length-1);
 T=SecondSplit[2].Split('=')[1];
 H=SecondSplit[3].Split('=')[1];
}

这段代码凭空写出来没验证正确性,有问题找我。另外正则表达式性能可能更好。

这段代码取得的num不带中括号,需要你可以自己加上,代码如下:

string num="["+FirstSplit[1];

 

num、T和H为了输出到另一个richtextbox,我没有转换为int

shuibiyy
2014-08-26 · TA获得超过1724个赞
知道小有建树答主
回答量:446
采纳率:100%
帮助的人:138万
展开全部
取中括号的内容(3个中括号)的正则: string patter1 = @"[\([][\s\S]*[\])]";
得到结果如 [001][127.0.0.1][10:51:49]

取T=24.50类型的正则: string patter2 = @"(?<=T=).{0,5}";
得到结果 24.50
取H=数字 的正则 string patter3 =@"(?<=H=).{0,5}”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式