配列内の文字列の出現を確認するにはどうすればよいですか?ループできるのは確かですが、標準機能はありますか?
最初に私はしました:
if(str in ["first", "second", "third"])
inしかし、連想配列でのみ機能すると不満を漏らしました。
phobosのドキュメントをすばやく検索しようとしましたが、配列に関連するモジュールが見つかりませんでした。
それで、何かありますか、それとも手動でループする必要がありますか?
編集:
私はD1、phobosにいます。
文字列が定数の場合(例のように)、連想配列リテラルを使用できますが、構文はきれいではありません。
if (str in ["first"[]:0, "second":0, "third":0])
D1のPhobosで使用できるライブラリ呼び出しはないと思いますが、D2のstd.algorithmには使用できるものがあります。
if (count(["first", "second", "third"][], str))
containsTangoでは、次のジェネリック関数を使用できますtango.text.Util。
if (contains(["first", "second", "third"][], str))
[]実際の静的配列の値ではなく、静的配列のメモリスライスを渡す必要があるため、配列リテラルの最後にが必要であることに注意してください。
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;
}