首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当字符串参数以Kotlin中的破折号(-)开头时,请避免org.apache.commons.cli.UnrecognizedOptionException

当字符串参数以Kotlin中的破折号(-)开头时,请避免org.apache.commons.cli.UnrecognizedOptionException
EN

Stack Overflow用户
提问于 2022-05-23 08:03:44
回答 1查看 241关注 0票数 1

我正在用Kotlin语言编写一个morse代码翻译程序,用于输入主要方法的参数:

代码语言:javascript
运行
复制
fun main(args: Array<String>)

我使用org.apache.commons.cli来管理命令选项(-d用于解码,-e用于编码)。问题是,当输入morse代码时,程序会将其与命令选项混淆(因为它使用破折号)。

使用该程序的示例:

代码语言:javascript
运行
复制
morse-translator -d --. .- .

返回:

代码语言:javascript
运行
复制
Exception in thread "main" org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option: --.

我附上了处理命令选项的类:

代码语言:javascript
运行
复制
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代码,但也有同样的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-24 11:48:11

Commons观察Unix上的默认解决方案,指定"--“指示命令行解析器不要解析更多选项。

以下Java片段在参数列表中包括"--“,然后正确地将字符串解析为尾随参数:

代码语言:javascript
运行
复制
    Options options = new Options();

    options.addOption("d", "decode", false, "Decode message");
    options.addOption("e", "encode", false, "Encode message");

    CommandLineParser parser = new DefaultParser();
    CommandLine cmd = parser.parse(options, new String[] {"-d", "--", "--. .- ."});
    assertTrue(cmd.hasOption("d"));
    assertFalse(cmd.hasOption("e"));

    assertEquals("[--. .- .]", cmd.getArgList().toString());
    assertEquals("[--. .- .]", Arrays.toString(cmd.getArgs()));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72345143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档