以最佳方式解析字符串

时间:2018-03-08 09:47:05

标签: string parsing

假设我有一个字符串onehhhtwominusthreehhkkseveneightjnine 现在我想解析这个字符串以获取数字。例如,这个字符串应该返回一个数组,[one,two,minusthree,seven,eight,nine]。 应保持整数的顺序。

任何人都可以建议一种最佳的解析方法吗?感谢。

2 个答案:

答案 0 :(得分:1)

(你还没有提到编程语言?)

我可能会搜索“减号”并检查其后面的数字。然后搜索“one”,然后搜索“two”,注意他们的索引。这将提供足够的信息来映射和输出您需要的结果和顺序。

另一种选择是按顺序查看每个字符,将每个字符与10个选项进行比较。我无法告诉你哪个是最有效的 - 我认为这取决于可能的总字符串长度。我可能会写两个并描述它们。

如果要搜索的字符串不是非常长,那么我怀疑第二种方法可能更有效。这是因为,只要您匹配,就可以消除搜索以下(已知)字符长度。

也就是说,如果您有“abceightd”,一旦发现“e”及其“8”,您就可以跳过4个字符。你也可以跳过a,b和c,因为它们不是10种选择中任何一种的起始角色。

我假设您的选择是:

  

一,二,三,四,五,六,七,八,九,减去

答案 1 :(得分:1)

假设a)您可以选择编程语言中的正则表达式,并且b)您可能的选择是 Andy G 假设...然后这个正则表达式可以选出数字与相关的minus分组,如果存在:

/((?:minus)*(?:one|two|three|four|five|six|seven|eight|nine))/g

例如,使用JavaScript RegEx.exec()应用于您的示例字符串,这会提取:

one
two
minusthree
seven
eight
nine

如果需要,您可以在匹配任何minus之后轻松放置空格。这有帮助吗?

相关问题