题
我如何检查数组中的字符串次数?我的意思是相信我可以循环,但有一个标准的功能?
起初我:
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))
请注意,在数组文本末尾的[]
是必需的因为我们需要通过静态阵列的存储器片,而不是由值实际静态数组。
不隶属于 StackOverflow