【问题标题】:Parsing a string into a custom object based on different criteria根据不同的条件将字符串解析为自定义对象
【发布时间】:2011-12-24 01:30:58
【问题描述】:

作为我正在处理的一个小项目的一部分,我需要能够将字符串解析为一个自定义对象,该对象代表一个动作、日期和一些其他属性。棘手的部分是输入字符串可以有多种形式,都需要正确解析。

输入字符串可以是以下格式:

明天早上九点上班

  • 周一下午 3 点洗我的车
  • 下周二上午 10 点给医生打电话
  • 在 3 天内下午 2:30 填写回扣表
  • 每天早上 7:00 叫醒我

输出对象看起来像这样:

{
   "Action":"Wash my car",
   "DateTime":"2011-12-26 3:00PM", // Format is irrelevant at this point
   "Recurring":False,
   "RecurranceType":""
}

起初我想构建某种树来表示具有不同结果和进一步状态的不同状态(On、In、Every 等)(状态机的候选者,对吗?)。然而,我越想这个,它就越开始看起来像一个语法解析问题。由于可以形成句子的(有限)数量,看起来需要实现某种语法解析算法。

另外,我是在前端做这个的,所以 JavaScript 是这里的首选语言。后端将用 Python 编写,如有必要,可以通过调用 AJAX 方法来使用,但我更愿意将其全部保留在 JavaScript 中。 (说实话,我不认为语言在这里是个大问题)。

那么,我是不是有点过头了?我有很强的 JavaScript 背景,但在语言设计、解析等方面除了学校课程之外什么都没有。有没有更好的方法来解决这个问题?非常感谢任何建议。

【问题讨论】:

    标签: javascript json parsing string-parsing


    【解决方案1】:

    我对语法解析了解不多,但这里的一些东西可能会有所帮助。

    我的第一个想法是你的句子语法似乎很一致

    第一个3-4个词一般是动词文本名词,后跟某种形式的时间。如果总选项仅限于句子可以采用的形式,您可以硬编码一些解析规则。

    我还遇到了几个 js 语法解析器,它们可能会让你有所收获:

    http://jscc.jmksf.com/ http://pegjs.majda.cz/ http://www.corion.net/perl-dev/Javascript-Grammar.html

    这是一个有趣的问题。请稍后使用您的解决方案更新此内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 2011-03-07
      • 2015-04-15
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多