【问题标题】:How to check if a number is Roman in bash [duplicate]如何在bash中检查数字是否为罗马数字[重复]
【发布时间】:2021-04-22 08:00:18
【问题描述】:

我找到了这个,但我不明白:

if [[ "${ARG//[IVXLCDM]/}" != "" ]]
then
        echo "Wrong input"
fi

【问题讨论】:

    标签: linux bash shell validation


    【解决方案1】:

    这是一个相当粗略的测试。它使用模式扩展来断言字符串是否仅由罗马数字中可接受的字符组成,而无需检查语义。

    // ... / 将替换变量中出现的任何字符 IVXLCDM。只有当它们都正常时,结果才会是一个空字符串。

    为什么粗制滥造?因为它很乐意接受不是有效罗马数字的MCCM

    编辑: 正如@LéaGris 指出的那样,它还将接受一个空字符串作为“Roman”,并且不等式!= 的测试效率低下。

    【讨论】:

    • 它也接受一个不能被认为是罗马数字的空字符串,并且与!= ""而不是使用-n进行比较效率低。
    • 公平的 cmets,@LéaGris ...介意我是否将其包含在我的答案中?
    • 去吧,这就是我没有给出答案的原因,如果你提到额外的细节,你的答案很好,甚至更好。
    • 扩展模式[[ $ARG != +([IVXLCDM]) ]] 至少可以解决空虚问题,但不能解决 MCCM 问题
    猜你喜欢
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2014-05-01
    • 2019-04-09
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 2011-01-02
    相关资源
    最近更新 更多