Найдите строку, начинающуюся с в массиве AS3

Я хочу запретить пользователям использовать эмуляторы веб-камеры, я сделал это в AS2 с помощью функции senocular, но я не могу заставить ее работать в AS3, поэтому вот старая версия от senocular , и я хотел бы сделать то же самое в AS3, пытался использовать indexOf, но не работает, мне нужно найти хотя бы первые 4 символа строки и сравнить их с элементом внутри массива в АС3!

String.prototype.startsWith = function(str){
        return !this.indexOf(str);
    }

вот что я хочу сделать:

var bannedDevices = new Array("FakeCam","SplitCam","Phillips Capture Card 7xx","VLC");

var myDeviceName = "SplitCam v1.5";  //"Splitcam" in bannedDevices should trigger this;

if (myDeviceName.indexOf(bannedDevices)){
   trace("banned device");
}

Спасибо за помощь !


person Alex    schedule 15.04.2011    source источник


Ответы (2)


Хорошо, я оставляю свой предыдущий ответ для истории. Теперь, когда я понял, что вы хотите:

public function FlashTest() {
    var bannedDevices:Array = new Array("FakeCam","SplitCam","Phillips Capture Card 7xx","VLC");

    var myDeviceName:String = "SplitCam v1.5";  //"Splitcam" in bannedDevices should trigger this;

    trace(startsWith(myDeviceName, bannedDevices, 4));
}

/**
* @returns An array of strings in pHayStack beginning with pLength first characters of pNeedle
*/
private function startsWith(pNeedle:String, pHayStack:Array, pLength:uint):Array
{
    var result:Array = [];
    for each (var hay:String in pHayStack)
    {
        if (hay.match("^"+pNeedle.substr(0,pLength)))
        {
            result.push(hay);
        }
    }
    return result;
}
person Kodiak    schedule 15.04.2011

Ваша потребность не очень ясна... Вот функция, которая возвращает каждую строку из массива, который начинается с заданной строки.

public function FlashTest() {
    var hayStack:Array = ["not this one", "still not this one", "ok this one is good", "a trap ok", "okgood too"];

    trace(startsWith("ok", hayStack));
}

/**
* @returns An array of strings in pHayStack beginning with the given string
*/
private function startsWith(pNeedle:String, pHayStack:Array):Array
{
    var result:Array = [];
    for each (var hay:String in pHayStack)
    {
        if (hay.match("^"+pNeedle))
        {
            result.push(hay);
        }
    }
    return result;
}
person Kodiak    schedule 15.04.2011
comment
Здравствуйте, Kodiak, спасибо за ответ, но он не работает так, как мне нужно, если я добавлю что-то в ok, например: ok v2.4, он ничего не отследит. - person Alex; 15.04.2011
comment
Вам нужно более точно определить, что вам нужно, здесь моя функция возвращает строки, которые начинаются ТОЧНО с заданного параметра... - person Kodiak; 15.04.2011