Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-02-2007, 23:28   #1 (permalink)
Neuer User
 
Benutzerbild von Grille
 
Registriert seit: Oct 2001
Beiträge: 156
Cool Einen langen String mit einer kurzen Zeichenfolge vergleichen

Hallo

Ich möchte gerne eine Variable mit einer anderen vergleichen, ob deren Inhalt in der anderen auch enthalten ist:

var liste = "hansi; borsti; schnuffel; berti; felix; ritzo;" ;
var name = "schnucki" ;

vergleich: ist [name] in[liste] enthalten? ja/nein

Weis jemand wie man das macht?

Mit welcher Methode erreicht man den geringsten Rechenaufwand (und Rechnerbelasung) wenn man ca 2000 solcher Vergleiche in kurzer Zeit erledigen will?

vielen Dank
Grille ist offline   Mit Zitat antworten
Alt 21-02-2007, 23:45   #2 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
PHP-Code:
var liste "hansi; borsti; schnuffel; berti; felix; ritzo;";
var 
name "schnucki";
liste liste.split(";");
function 
checkArr() {
    var 
sig = -1;
    for (
i in liste) {
        if (
name == liste[i]) {
            
sig i;
        }
    }
    return (
sig);
}
trace(checkArr()); 
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 21-02-2007, 23:50   #3 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
PHP-Code:
var myList "hansi; borsti; schnuffel; berti; felix; ritzo;" ;
var 
myName1 "schnuki";
var 
myName2 "schnuffel";

var 
myNr1 myList.indexOf(myName1);
var 
myNr2 myList.indexOf(myName2);

trace(myNr1); // -> -1
trace(myNr2); // -> 15

// indexOf(Suchstring) liefert die Position des ersten
// Vorkommens des angegebenen Teilstrings oder -1. 
Zur Performance kann ich Dir leider nichts sagen.

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 21-02-2007, 23:52   #4 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
nimm die lösung von gaspode.
die lösung von bloba sollte eigentlich nicht funktionieren wegen des leerzeichens.

und überdenk nochmal deine herangehensweise. nimm lieber gleich einen array als liste.

PHP-Code:

function isInListe(str:String):Boolean{
    var 
arr:Array = liste.split(";");
    for(var 
i:Number 0iarr.lengthi++){
        if(
arr[i].charAt(0) == ' ')
            
arr[i] = arr[i].substring(1,arr[i].length);
        if(
str == arr[i])
            return 
true;
    }
    return 
false;

[edit]

PHP-Code:
function isInListe(str){
    var 
arr liste.split(";");
    for(var 
0iarr.lengthi++){
        if(
arr[i].charAt(0) == ' ')
            
arr[i] = arr[i].substring(1,arr[i].length);
        if(
str == arr[i])
            return 
true;
    }
    return 
false;


Geändert von mojave (21-02-2007 um 23:57 Uhr)
mojave ist offline   Mit Zitat antworten
Alt 21-02-2007, 23:59   #5 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Post

hi grille und bloba
hatte auch noch ein bissal rumgebastelt..
PHP-Code:
String.prototype.searchString = function(word) {

    if(
String(this.split(word)).length this.length) return true;
    else return 
false;

}


var 
textVarStart "Lorem Ipsum dolor sit amet."


var textVarErgebnis1 textVarStart.searchString("Ipsum");
var 
textVarErgebnis2 textVarStart.searchString("sit");
var 
textVarErgebnis3 textVarStart.searchString("dolorem");

trace(textVarErgebnis1);
trace(textVarErgebnis2);
trace(textVarErgebnis3); 
grüße, sal

ps. geil.. da war ich ja mal wieder viel zu langsam und das noch mit so ner lösung!
grüße auch an gaspode & mojave
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!

Geändert von salazar (22-02-2007 um 00:00 Uhr)
salazar ist offline   Mit Zitat antworten
Alt 22-02-2007, 00:03   #6 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
nochmal zu dem ganzen:

gaspodes lösung ist doch nicht so gut. zumindest nicht sicher. denn was wäre wenn ich nach "schnu" suche.

ebenso mit dem ansatz von salazar. wenn ich einen exakten begriff suche ist das auch nicht sicher.

für das bsp funktioniert meine lösung sicher

jedoch ist die herangehensweise shice und kostet performance. entweder du verzichtest auf das leerzeichen oder du speicherst die strings gleich in einem array..
mojave ist offline   Mit Zitat antworten
Alt 22-02-2007, 00:03   #7 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
Zitat:
Zitat von mojave Beitrag anzeigen
nimm die lösung von gaspode.
die lösung von bloba sollte eigentlich nicht funktionieren wegen des leerzeichens.

leerzeichen ? wie wo was ?
kapppt doch wunderbar - aso ich denke dass das array später ohne leerzeichen angelegt wird...
__________________
gruß bloba

2 x onkel² b_d

Geändert von bloba (22-02-2007 um 00:06 Uhr)
bloba ist offline   Mit Zitat antworten
Alt 22-02-2007, 00:04   #8 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
@salazar: Krass, ein Prototype.
Ob wohl auch noch jemand
extra eine Klasse schreibt?

Zitat:
Zitat von mojave Beitrag anzeigen
gaspodes lösung ist doch nicht so gut.
Schade.

gruß, gaspode

Geändert von gaspode (22-02-2007 um 00:05 Uhr)
gaspode ist offline   Mit Zitat antworten
Alt 22-02-2007, 00:07   #9 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
Zitat:
Zitat von bloba Beitrag anzeigen
leerzeichen ? wie wo was ?
kapppt doch wunderbar - aso ich denke dass das array später ohne leerzeichen angelegt wird...
ne klappt nicht

PHP-Code:
var liste "hansi; borsti; schnuffel; berti; felix; ritzo;";
var 
name "schnuffel";
liste liste.split(";");
function 
checkArr() {
    var 
sig = -1;
    for (
i in liste) {
        if (
name == liste[i]) {
            
sig i;
        }
    }
    return (
sig);
}
trace(checkArr());  // -1 klappt nüsch 

Geändert von mojave (22-02-2007 um 00:10 Uhr)
mojave ist offline   Mit Zitat antworten
Alt 22-02-2007, 00:11   #10 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
Zitat:
Zitat von mojave Beitrag anzeigen
ne klappt nicht

PHP-Code:
var liste "hansi; borsti; schnuffel; berti; felix; ritzo;";
var 
name "schnuffel";
liste liste.split(";");
function 
checkArr() {
    var 
sig = -1;
    for (
i in liste) {
        if (
name == liste[i]) {
            
sig i;
        }
    }
    return (
sig);
}
trace(checkArr());  // -1 klappt nüsch 
wenn de die liste gescheid schreibst , dann schon (ohne leerzeichen)
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 22-02-2007, 00:13   #11 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
Zitat:
Zitat von bloba Beitrag anzeigen
wenn de die liste gescheid schreibst , dann schon (ohne leerzeichen)
oder meine lösung.

aber haste rescht
mojave ist offline   Mit Zitat antworten
Alt 22-02-2007, 16:11   #12 (permalink)
Neuer User
 
Benutzerbild von Grille
 
Registriert seit: Oct 2001
Beiträge: 156
Wink

Zitat:
Zitat von mojave Beitrag anzeigen
PHP-Code:

function isInListe(str:String):Boolean{
    var 
arr:Array = liste.split(";");
    for(var 
i:Number 0iarr.lengthi++){
        if(
arr[i].charAt(0) == ' ')
            
arr[i] = arr[i].substring(1,arr[i].length);
        if(
str == arr[i])
            return 
true;
    }
    return 
false;

[edit]

PHP-Code:
function isInListe(str){
    var 
arr liste.split(";");
    for(var 
0iarr.lengthi++){
        if(
arr[i].charAt(0) == ' ')
            
arr[i] = arr[i].substring(1,arr[i].length);
        if(
str == arr[i])
            return 
true;
    }
    return 
false;

Hallo ... vielen Dank für eure Vorschläge ...

Ich glaube das mit dem Array macht mehr Sinn, da ich 1300 einzelne MC auf der Bühne habe, und jedes soll prüfen, ob der eigene MC-Name in der Liste (externe TXT) enthalten ist, oder nicht. Sicher belastet das den Rechner sehr wenn es nicht mit einem Array gemacht wird.

Kurze Frage ... warum sind es 2 Codes: 2 verschiedene Wege oder gehören die zusammen? Mir scheint, das untere ist die abgespeckte Version von oben?

Leider bin ich noch nicht so weit in die Programmierkenntnisse vorgedrungen, um den Code oben richtig zu verstehen. Ich versuchs mal.

Vielen Dank nochmal!

Geändert von Grille (22-02-2007 um 16:16 Uhr)
Grille ist offline   Mit Zitat antworten
Alt 22-02-2007, 16:19   #13 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Zitat:
Zitat von Grille Beitrag anzeigen
warum sind es 2 Codes
Ich würde mal sagen, die sind gleich.
Der obere ist nur mit typisierten Variablen (ActionScript 2).

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 23-02-2007, 15:52   #14 (permalink)
Neuer User
 
Benutzerbild von Grille
 
Registriert seit: Oct 2001
Beiträge: 156
Hallo Nochmal ...

mein script scheint jetzt zu funktionieren .. hier der CODE
PHP-Code:
/* im root die liste */
liste = Array ("2a3","2g6","1d20","1j40","1a1","1a2");

/* eines der 1300 Objekte, welches prüfen soll, ob der eigene name in der Liste steht */
for (var 0i<_root.liste.lengthi++) {
    if (
name == _root.liste[i]) {
             
/* wenn es in der Liste enthalten ist, dann soll es zu Frame 3 springen */
    
this.gotoAndPlay(3);
    }

mojave .. ich habe deinen Script ja fast so genommen, doch habe ich diesen Teil herausgelöscht. Kannst Du mir mal erklären wozu der da ist?

PHP-Code:
if(arr[i].charAt(0) == ' '
            
arr[i] = arr[i].substring(1,arr[i].length); 
Grille ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele