首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从没有常量分隔符的文本行中提取字段?

如何从没有常量分隔符的文本行中提取字段?
EN

Stack Overflow用户
提问于 2010-03-04 07:24:47
回答 6查看 515关注 0票数 1

在每个字段之间没有明确分隔符(分隔符)的情况下,从每一行中提取每个字段的最佳方法是什么?

下面是提取其字段所需的行的示例:

代码语言:javascript
复制
3/3/2010 11:00:46 AM                      BASEMENT-IN          
3/3/2010 11:04:04 AM 2, YaserAlNaqeb      BASEMENT-OUT         
3/3/2010 11:04:06 AM                      BASEMENT-IN          
3/3/2010 11:04:18 AM                      BASEMENT-IN          
3/3/2010 11:14:32 AM 4, Dhileep              BASEMENT-OUT         
3/3/2010 11:14:34 AM                      BASEMENT-IN          
3/3/2010 11:14:41 AM                      BASEMENT-IN          
3/3/2010 11:15:33 AM 4, Dhileep           BASEMENT-IN          
3/3/2010 11:15:42 AM                      BASEMENT-IN          
3/3/2010 11:15:42 AM                      BASEMENT-IN          
3/3/2010 11:30:22 AM 34, KumarRaju        BASEMENT-IN          
3/3/2010 11:31:28 AM 39, Eldrin           BASEMENT-OUT         
3/3/2010 11:31:31 AM                      BASEMENT-IN          
3/3/2010 11:31:39 AM                      BASEMENT-IN          
3/3/2010 11:32:38 AM 39, Eldrin           BASEMENT-IN          
3/3/2010 11:32:47 AM                      BASEMENT-IN          
3/3/2010 11:32:47 AM                      BASEMENT-IN          
3/3/2010 11:33:26 AM 34, KumarRaju        BASEMENT-OUT         
3/3/2010 11:33:28 AM                      BASEMENT-IN    

每行有6个字段,其中一些字段可以是空的。解决这个问题的最好方法是什么?

  • 我在用Java

01版

  • 字段5可以是空的(但是在任何情况下都应该承认它的存在)
  • 空间的数量可以改变
  • 最后一个词可能会改变
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-04 08:57:56

在我看来,似乎有三个元字段:

代码语言:javascript
复制
3/3/2010 11:32:38 AM 39, Eldrin           BASEMENT-IN          
3/3/2010 11:32:47 AM                      BASEMENT-IN 

MF1:3/3/2010 11:32:38 AM

MF2:39, Eldrin

MF3:BASEMENT-IN

其中MF2是可选的。那么,我的分隔符将是:

MF1到并包括AM\PM

MF2号码,除了地下室以外的任何东西-*

MF3地下室-*

我不太擅长雷克斯,但我会把这三个组像这样

代码语言:javascript
复制
(anything)(AM|PM)(number,anything)?(BASEMENT-anything)

在哪里?意思是可选组。

票数 1
EN

Stack Overflow用户

发布于 2010-03-04 07:30:31

您可以按列号去掉日期和基-FOO数据,因为它们总是出现在行中的同一点。然后,可以根据逗号将剩余部分拆分。您是否需要处理转义逗号\,还是引号"foo,bar“中的逗号取决于您和您的业务需求。

票数 2
EN

Stack Overflow用户

发布于 2010-03-04 07:30:47

你可以:

  • 将整行读入字符串。
  • 分隔空格上的读行(\s+)。你应该买5到6块。
  • piece0、piece1和piece2将是日期、时间和AM/PM。
  • 检查piece3是否有编号:如果是,请阅读下一篇文章作为名称
  • 最后一块是地下室的东西。
  • 根据需要将字符串中的片段转换为日期、时间、int。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2377492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档