PowerShell的:145 103
对原始评论者的更改已从
asker的每个注释消除。
码:
"$([array]::IndexOf(($s=(read-host)-split''|?{$_}),($x=$s|?{$_%2-eq0}|?{$_-gt0}|sort|select -f 1))),$x"
演练:
"
... "
引号内的所有内容都将包含在输出中。
$(
... )
括号之间的所有内容都将被视为命令,并且将包含该代码的输出,而不是命令本身。
[array]::IndexOf(
... )
这用于获取数组元素的索引。它的第一个参数是要搜索的数组对象。第二个参数是要找到的对象。这仅输出第一个匹配元素的索引。我尝试过IndexOf
直接针对$s
(例如:)使用一种方法$s.IndexOf($x)
,但是由于我尚未弄清楚的某些原因而失败-它声称该方法在该对象上不存在。
(
... )
括号内的表达式将是的第一个参数IndexOf
。
$s=
$ s将是存储用户输入的变量。
(read-host)-split''
获取用户输入,并将其拆分为字符数组。
|?{$_}
过滤掉由生成的多余的空数组元素-split''
。
,(
... )
括号内的表达式将是的第二个参数IndexOf
。
$x=
$ s将是一个变量,用于存储用户输入中的最低偶数位。
$s|?{$_%2-eq0}
从$ s中取出偶数。
|?{$_-gt0}
使零无效。
|sort
对其余对象进行排序,默认顺序为升序。
|select -f 1
选择第一个对象,该对象现在将是最低的偶数位。
,$x
上面的代码将输出我们最低偶数的索引。这将添加一个逗号,然后输出数字本身。
笔记:
这也许是规则4的延伸。如果没有偶数,输出将不包括第二个数字。
同样,如果输入包含非数字元素,这将引发一些非终止错误。该脚本仍将运行并提供正确的输出,但是您可能需要在运行之前将其设置$ErrorActionPreference
为'SilentlyContinue'
。