首页 > 解决方案 > 如何在bash中检查数字是否为罗马数字

问题描述

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

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

标签: linuxbashshellvalidation

解决方案


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

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

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

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


推荐阅读