PDA

Volledige versie bekijken : string replace


w!cked
%Europe/Berlin %569 %2005, 14:39
Zoek ik nou verkeerd ofzow,

ik heb een string en wil daar in bijvoorbeeld "a" vervangen voor "b".
replace werkt niet?

wat is de correcte schijfwijze?

Groet

W!cked

Dauntless
%Europe/Berlin %571 %2005, 14:42
var str:String ="alfabet";
var newStr:String = str.split("a").join("b");
trace(newStr);
Zo :)

Roenes
%Europe/Berlin %571 %2005, 14:42
Ik denk dat je deze proto (http://www.flashfocus.nl/forum/showthread.php?t=292) gebruikt?

Dan moet je deze dus eerst in je flashmovie plaatsen en dan kun je daarna bv dit zeggen:

var mijnString = "Hallo daar!";
mijnString.replace("a", "x");
trace(mijnString); //output: hxllo dxxr!

//Edit
En daar is dauntless weer ;)

Dauntless
%Europe/Berlin %571 %2005, 14:43
Wat is het voordeel van Narie's prototype tegenover 'mijn' manier ?

Roenes
%Europe/Berlin %572 %2005, 14:44
Wat is het voordeel van Narie's prototype tegenover 'mijn' manier ?Niets, alleen dat iedere string een replace functie heeft. Maar ik was al mijn post aan het maken voordat ik de jouwe zag en aangezien de TS het over replace-functie had ging ik ervan uit dat hij die proto gebruikt had :)

Dauntless
%Europe/Berlin %573 %2005, 14:46
en aangezien de TS het over replace-functie had ging ik ervan uit dat hij die proto gebruikt had :)
Dan zal TS wat meer moeten vertellen :). Maar beide methodes werken :)

Roenes
%Europe/Berlin %575 %2005, 14:49
Dan zal TS wat meer moeten vertellen :). Maar beide methodes werken :)Klopt. Sterker nog! Narie's proto gebruikt jouw methode van split en join :)

w!cked
%Europe/Berlin %576 %2005, 14:50
ik had die functie idd wel al gevonden maar nog niet toegepast ik snapte hem namelijk niet helemaal. :p

maar heeft AS niet gewoon een replace functie ingebouwd zitten? zoja welke is dat dan.

Dauntless
%Europe/Berlin %577 %2005, 14:51
ik had die functie idd wel al gevonden maar nog niet toegepast ik snapte hem namelijk niet helemaal. :p

maar heeft AS niet gewoon een replace functie ingebouwd zitten? zoja welke is dat dan.
Een standaard functie zit er niet in, maar de methodes die wij je gegeven hebben zijn zeker veel gebruikt :)

w!cked
%Europe/Berlin %618 %2005, 15:49
Thnx for the replys.
Het werkt.
al blijf ik het maf vinden dat er niet standaard een string replace funtie in AS zit.

Greetingz

W!cked

Roenes
%Europe/Berlin %618 %2005, 15:51
al blijf ik het maf vinden dat er niet standaard een string replace funtie in AS zit.Dit is idd erg vreemd en ik vraag me af waarom ze dit nogsteeds niet in flash ingebakken hebben zitten. Zeker omdat het zo makkelijk is :)

dutchfoxy
%Europe/Berlin %419 %2005, 11:04
Een vraag hier aan toevoegen als ik mag!?

Hoe replace je dan een linebreak in de tekst met de code <br> ?

\n enzo werkt niet in deze methode namelijk.

Iemand?

pulletje
%Europe/Berlin %428 %2005, 11:17
misschien een idee om een nieuw topic te starten voor een nieuwe vraag en daar komt bij dat je dit ook op kunt zoeken KLIK (http://www.flashfocus.nl/forum/showthread.php?t=1011&highlight=linebreak)

Roenes
%Europe/Berlin %585 %2005, 15:03
\n enzo werkt niet in deze methode namelijk.
\n werkt wel maar je moet de \ escapen:

var str:String ="alfa\nbet";
var newStr:String = str.split("\\n").join("<br>");
trace(newStr);

Gerrit55
%Europe/Berlin %604 %2005, 15:30
Met escapen "\\n" heb je dus letterlijk "\n" in je tekst staan en niet %0D%

Op windows-systemen kom je vooral \r\n tegen (%0D% %0A%) en
op unlix-like \n (%0A%)


str.split("\n\n").join("\n").split("\r\n").join("<br>").split("\r").join("<br>").split("\n").join("<br>")

Roenes
%Europe/Berlin %609 %2005, 15:37
ol55, jouw regeltje gaat niet werken want de slashes vallen weg. in je eerste split zal ie dus op zoek gaan naar nn ipv \n\n :)

Gerrit55
%Europe/Berlin %736 %2005, 18:40
test het en je weet het :P

SaphuA
%Europe/Berlin %752 %2005, 19:03
Dit is idd erg vreemd en ik vraag me af waarom ze dit nogsteeds niet in flash ingebakken hebben zitten. Zeker omdat het zo makkelijk is :)
Er zijn zat manieren om omheen te werken, waarom zouden ze daar moeite voor doen? Dan kunnen ze alles er wel in gaan maken ;)

Roenes
%Europe/Berlin %877 %2005, 22:04
Er zijn zat manieren om omheen te werken, waarom zouden ze daar moeite voor doen? Dan kunnen ze alles er wel in gaan maken ;)Dat is wel heel makkelijk gezegd. Ieder zelf respecterende taal heeft wel een string replace functie. Dit is echt 1 van de basis functies van de string classe. Daarom vind ik het wel erg vreemd dat die niet ingebakken zit. :)

TheDutch
%Europe/Berlin %890 %2005, 22:22
Dat komt in ActionScript 3.0 (http://www.flashfocus.nl/forum/showthread.php?t=4498) te zitten :).

SaphuA
%Europe/Berlin %410 %2005, 10:51
var test = "Ik ben een test!\nEn ik ben nog een test!";
trace(test);
test = test.split("test").join("varkentje");
trace(test);
Wat is hier niet goed genoeg aan dan?

TheDutch
%Europe/Berlin %416 %2005, 10:59
Math.abs()

var nummer:Number = -2;
var posNummer:Number = Math.abs(nummer)
trace(posNummer);

Waarom zit dat er überhaupt in? Wat is er niet goed aan dit?


var nummer:Number = -2;
var posNummer:Number = nummer<0?-nummer:nummer;
trace(posNummer);


Zo kan ik nog wel een aantal functies binnen Flash opnoemen die eigenlijk heel makkelijk zelf te programmeren zijn. Het gaat erom dat die functies het overzichtelijker maken en wellicht ook makkelijker maken voor mensen die niet het vermogen hebben deze functies zelf te schrijven :).

Dauntless
%Europe/Berlin %901 %2005, 22:38
if(Math.sqrt(Math.abs(xAfstand*xAfstand + yAfstand*yAfstand)) < 5) {
//als de afstand van de mc kleiner dan 5 pixels is

Dit gaat toch wel handig met Math.abs() ... Anders moet je dus nog een extra var aan maken :).

Roenes
%Europe/Berlin %964 %2005, 00:09
DL, je hebt het punt van TheDutch denk ik niet door. Hij bedoelt: "Waarom zou de Math.abs() methode moeten bestaan als het ook zo simpel te schrijven is met zijn 2e code.". Dus dat is naar FlashWizard toe. Omdat flashwizard het een beetje onzin vind dat er een replace functie moet zijn ;)

Dauntless
%Europe/Berlin %981 %2005, 00:32
Euhm, zeker dat ik hem niet snap?

Hij zegt: Waarom bestaat er een Math.abs() wnr je het volgende kan gebruiken?
var posNummer:Number = nummer<0?-nummer:nummer;

Ik antwoord:
In een if gaat die structuur niet:
if(Math.sqrt(Math.abs(xAfstand*xAfstand + yAfstand*yAfstand)) < 5) {

Maar nog sterker: Math.sqrt() mag geen negatief getal hebben. Als Math.abs() er dus niet was zou ik eerst moeten gaan checken of hij kleiner of groter is dan nul, om hem vervolgens nog eventueel met -1 te vermenigvuldigen. Dan is Math.abs(); toch wél een 'nuttige functie' ?

Roenes
%Europe/Berlin %984 %2005, 00:37
Kijk nog eens goed naar zijn scriptje. Zijn if-else regel doet precies hetzelfde als Math.abs(). als het getal kleiner is als 0 maakt hij er een positief getal van en is getal groter als 0 dan veranderd er niets. Je kunt dus met zijn scriptje hetzelfde doen als jij met Math.abs. Daarom zou je kunnen zeggen: waarom math.abs niet schrappen, dat if-else ding doet hetzelfde. Maar dat zou dom zijn. Zo ook met de replace functie, waarom die er niet inzetten? Omdat split/join methode ook werkt? Neej toch :P

Dauntless
%Europe/Berlin %988 %2005, 00:43
Het gaat er mij gewoon om dat je dan een extra var moet aanmaken (met dat if elsje) terwijl het met de Math.abs() niet moet, en dat maakt hem nuttig! [^] NAH :D

TheDutch
%Europe/Berlin %996 %2005, 00:54
Niet echt hoor Dauntless :).

if(Math.sqrt((xAfstand*xAfstand + yAfstand*yAfstand)<0?-(xAfstand*xAfstand + yAfstand*yAfstand):(xAfstand*xAfstand + yAfstand*yAfstand)) > 5) {}

Dauntless
%Europe/Berlin %000 %2005, 01:01
Lol ...

Ok, dan zat ik fout... (Had het moeten testen :()Maar geef wel toe: Dat wordt onoverzichtelijk :p

TheDutch
%Europe/Berlin %002 %2005, 01:03
En dat is ook nu net het punt wat ik noemde waarom dit soort functies wel handig zijn :P.

Zo zitten we allemaal weleens fout, haha.

Welterusten,
Erwin :)