c#如何读取文本中需要的字段内容(解决了再加分)

1、文本内容如下,内容很多,但有规律,以下标记的内容只是文本中的几行,其他的类似。SACI91RCTP272330METARRCFN272330Z32008KT9999F... 1、文本内容如下,内容很多,但有规律,以下标记的内容只是文本中的几行,其他的类似。
SACI91 RCTP 272330
METAR RCFN 272330Z 32008KT 9999 FEW028 BKN300 20/15 Q1016(A3001)
NOSIG=
SACI33 ZBYN 272330
METAR ZBYN 272330Z 08001MPS 4000 BR NSC M02/M05 Q1022 NOSIG=

2、我只需要其中"METAR"到"NOSIG="的内容。即提取
"METAR RCFN 272330Z 32008KT 9999 FEW028 BKN300 20/15 Q1016(A3001)
NOSIG="
"METAR ZBYN 272330Z 08001MPS 4000 BR NSC M02/M05 Q1022 NOSIG="

3、提取之后,我要对该内容拆分读取到数据库Access中,即Access表中的每条记录按以下字段存储,即"METAR","RCFN","272330Z","32008KT","9999","FEW028","BKN300",
"20/15","Q1016(A3001)","NOSIG="。

(我知道如何操作Access数据库,但不知道如何按上述想法读取文本想要的内容。
提供点建议方法也可以,能有较详细的代码提供更好,谢谢大家喽!^^)
本人主要玩 winform 窗体程序设计哈。
展开
 我来答
随风z9pd
2013-05-04 · TA获得超过777个赞
知道小有建树答主
回答量:442
采纳率:0%
帮助的人:580万
展开全部
使用正则表达式匹配抽取需要的文本内容:
string pattern = @"METAR(.)+NOSIG=";
Regex reg = new Regex(pattern);
Match m = reg.Match(text);//text为文本中所有内容
while (m.Index > 0)
{
result.Add(m.Groups[1].Value);
m = m.NextMatch();
}
抽取到的内容都在result里了。

然后再讲result中每个字符串以空格分割(split(' ')),即可得到每一列的值。

正则部分目前没环境测试,如有错误请楼主做下调整。如果全部的文本中有换行,可能需要先将换行去掉
哲事姓无
推荐于2016-08-08 · TA获得超过1176个赞
知道小有建树答主
回答量:903
采纳率:100%
帮助的人:428万
展开全部
const string filePath = @"文件路径";
var encoding = Encoding.Default; // 文件编码,根据需要调整
// 内容缓存
StringBuilder buffer = null;
using (var streamReader = new StreamReader(filePath, encoding))
{
    while (true)
    {
        var line = streamReader.ReadLine();
        if (line == null)
            break;
        if (line.StartsWith("METAR ")) // 如果一行以METAR 开头,则创建缓存加入该行
            buffer = new StringBuilder(line);
        else if (buffer != null) // 如果缓存已经创建,则将当前行添加入缓存进行处理。
            buffer.Append(" " + line);
        if( buffer == null || !buffer.ToString().EndsWith("NOSIG="))
            continue; // 缓存未创建,或结束符不是NOSIG=,则没有内容需要处理,跳过
               
        // 拆分内容
        var strs = buffer.ToString().Split(' ');
        Debug.Assert(strs.Length == 10);
        //todo: 将拆分的各个部分存在的数据库中
        buffer = null;
    }
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d038aa7
2013-05-04 · TA获得超过471个赞
知道小有建树答主
回答量:1129
采纳率:64%
帮助的人:225万
展开全部
对啊 用正则
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式