我需要从用户那里获取这样的信息:
data -fn firstname -ln lastname -e email -ph phonenumber
我想处理所有标志的排列,这意味着用户可以以 4!(阶乘)状态提供信息。 其中一些:
data -ln lastname -e email -ph phonenumber -fn firstname
data -fn firstname -e email -ln lastname -ph phonenumber
我想知道最好的方法是什么。正则表达式是解决这个问题的最佳方法吗?
一些解决方案可以是:
我会质疑正则表达式在这里的用处。对我来说,您似乎正在尝试解析命令行选项。
为此,我会使用专用库,例如Apache 的 commons-cli。
或者编写您自己的解析器类,它逐字读取输入(逐个标记),跟踪最后遇到的键(例如“-fn”)并将以下值存储在 firstName 的变量中。等等。
正则表达式往往会很快变得非常复杂,基本上变得难以维护。