我如何检查数组中的字符串次数?我的意思是相信我可以循环,但有一个标准的功能?

起初我:

if(str in ["first", "second", "third"])

但是抱怨in仅与关联数组的工作原理。

我试图快速查找的火卫一文档,但没有找到有关阵列的任何模块。

那么,有什么,还是我只是通过它必须循环手动?

编辑:

我在D1,福波斯。

有帮助吗?

解决方案

通过D1火卫一,你必须自己做。但是,这并不难。

bool contains(T)(T[] a, T v)
{
    foreach( e ; a )
        if( e == v )
            return true;
    return false;
}

另外,你应该能够使用这样的:

auto words = ["first"[], "second", "third"];
if( words.contains(str) ) ...

希望有所帮助。

顺便说一下,可以修改上述作为“的indexOf”功能的工作:

size_t indexOf(T)(T[] a, T v)
{
    foreach( i, e ; a )
        if( e == v )
            return i;
    return a.length;
}

其他提示

如果您的字符串是常量(如在该示例中),则可以使用关联数组字面,但语法不漂亮:

if (str in ["first"[]:0, "second":0, "third":0])

我不认为有一个库调用您可以在D1的火卫一用,但D2的std.algorithm有东西,你可以使用:

if (count(["first", "second", "third"][], str))

在探戈,可以使用通用的contains函数从tango.text.Util

if (contains(["first", "second", "third"][], str))

请注意,在数组文本末尾的[]是必需的因为我们需要通过静态阵列的存储器片,而不是由值实际静态数组。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top