我正在用Kotlin语言编写一个morse代码翻译程序,用于输入主要方法的参数:
fun main(args: Array<String>)
我使用org.apache.commons.cli来管理命令选项(-d用于解码,-e用于编码)。问题是,当输入morse代码时,程序会将其与命令选项混淆(因为它使用破折号)。
使用该程序的示例:
morse-translator -d --. .- .
返回:
Exception in thread "main" org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option: --.
我附上了处理命令选项的类:
import org.apache.commons.cli.CommandLine import org.apache.commons.cli.DefaultParser import org.apache.commons.cli.Options class Input(args: Array<String>) { private var flags: Options = Options() private var parser: DefaultParser = DefaultParser() private var cli: CommandLine init { setupOptions() cli = parser.parse(flags, args) /** Determine the flags allowed */ private fun setupOptions() { flags.addOption("e", "encode", false, "Encode message") flags.addOption("d", "decode", false, "Decode message") }
我试着用双引号包围morse代码,但也有同样的问题。
【玩转 GPU】有奖征文
精美礼品等你拿!
Commons观察Unix上的默认解决方案,指定"--“指示命令行解析器不要解析更多选项。
以下Java片段在参数列表中包括"--“,然后正确地将字符串解析为尾随参数:
Options options = new Options(); options.addOption("d", "decode", false, "Decode message"); options.addOption("e", "encode", false, "Encode message"); CommandLineParser parser = new DefaultParser();