質問

どのように私は、アレイ内の文字列のoccuranceのためにチェックしますか?私はループできることを確認して平均値、標準的な機能はありますか?

最初に私がやった:

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