我的编程任务的一部分需要使用状态模式解析字符串。明确要求使用状态模式,因此不允许其他选项。
示例字符串是:“更新用户过滤器userId=user3 set name=xxx ”。(粗体是关键字)。
请求如下:
在解析查询时,您应该使用状态模式。有四种状态:OPERATOR、OBJECT、FILTER 和 VALUES。
我查看了有关状态模式的示例,我想我明白了,但我无法弄清楚如何将它应用于字符串解析。
如果有人给我一些提示,我会很高兴。
我的编程任务的一部分需要使用状态模式解析字符串。明确要求使用状态模式,因此不允许其他选项。
示例字符串是:“更新用户过滤器userId=user3 set name=xxx ”。(粗体是关键字)。
请求如下:
在解析查询时,您应该使用状态模式。有四种状态:OPERATOR、OBJECT、FILTER 和 VALUES。
我查看了有关状态模式的示例,我想我明白了,但我无法弄清楚如何将它应用于字符串解析。
如果有人给我一些提示,我会很高兴。
首先创建你的状态接口。也许用一种方法:parse
创建你的 4 个具体状态。实现每个以仅解析字符串的一部分,您的上下文将负责拆分字符串并更改状态。
在您的上下文类中,您执行以下操作:
OperatorState
总是第一个,所以初始化FilterState
)等等...
如果您了解状态模式,那么这应该足以构建解决方案。
注意:您可以拥有一个包含关键字和状态的字典,以便您可以自动化它,但在您的情况下,我认为一个简单的解决方案就足够了。
祝你好运
我可能误解了您所说的状态模式是什么意思,所以如果我弄错了,请忽略我,
假设您正在寻找字符串"abac"
您从空状态开始""
并向下迭代字符串的字符。如果你得到一个'a'
你去状态"a"
得到一个'b'
,去状态"ab"
,得到'a'
,你回到状态"a"
,任何其他的空状态,等等
一旦你说"abac"
你找到了你的字符串。查找正则表达式是一个简单的 DFA。