Hallo FF-Gemeinde, da ich mich gestern abend mit dem "Problem" der fehlenden Methode "insert()" in ActionScript beschäftigt habe, habe ich ne kleine Funktion geschrieben,
die bei Strings (z.B. Punktierung nach jedem Tausender bei Zahlen) nach gewähltem Abstand ein Trennzeichen macht. Nix weltbewegendes, aber vielleicht erspart es ja dem einen oder anderen ein wenig Code-Arbeit...
PHP-Code:
//Parameter
//test_str = der Ausgangsstring, in den ein Trennzeichen eingefügt werden soll (z.B. "1000000")
//eingefuegteszeichen = das Trennzeichen, das eingefügt werden soll (z.B. "." oder ",");
//abstand = der Abstand zwischen den Trennzeichen (z.B. bei abstand = 3 => "1.000.000" )
function insert(test_str:String,eingefuegteszeichen:String,abstand:Number):String {
trace("Ursprünglicher String: " + test_str + "\n");
//Stringlänge ermitteln
strlaenge = test_str.length;
trace("Länge des Strings: " + strlaenge);
//Abfrage, ob überhaupt ein Trennzeichen benötigt wird
if (strlaenge > abstand) {
//Anzahl, wie oft ein Teilstring ermittelt werden muss
anzahlschleifendurchgaenge = Math.floor(strlaenge/abstand);
trace("Länge des Teiles, das Trennzeichen bekommt: " + anzahlschleifendurchgaenge*abstand);
//Ist die String-Länge ein Vielfaches des Abstandes...
pos1 = strlaenge % abstand;
trace("Länge des Teiles, das nicht 3 Zeichen lang ist: " + pos1);
//Wenn nein...
if (pos1 != 0) {
teilstr0_str = test_str.substr(0,pos1);
trace("Teilstring 0: " + teilstr0_str);
//Der Teil des Strings, der nicht "abstand" Zeichen enthält
teilstr0_str += eingefuegteszeichen;
//Der restliche Teil des Strings, der ein Vielfaches des Abstands an Zeichen hat
tripel_str = test_str.substr(pos1,anzahlschleifendurchgaenge*abstand);
trace("Die Zeichenkette, die Trennzeichen bekommen soll: " + tripel_str);
zaehler = 0;
var teilstr:Array = [];
ergebnis_str = "";
for (i=1; i<=anzahlschleifendurchgaenge; i++) {
//Teilstrings werden erzeugt und hinter jeden Teilstring das Trennzeichen angehängt
teilstr[i] = tripel_str.substr(zaehler,abstand);
if (i<anzahlschleifendurchgaenge) {
teilstr[i] += eingefuegteszeichen;
}
trace("Teilstring " + i + ": " + teilstr[i]);
zaehler += abstand;
ergebnis_str += teilstr[i];
}
//Teilstringe wieder zusammen setzen
ergebnis_str = teilstr0_str.concat(ergebnis_str);
trace("\nErgebnis-String: " + ergebnis_str);
return ergebnis_str;
} else //String-Länge ist Vielfaches von Abstand
{
//Der restliche Teil des Strings, der ein Vielfaches des Abstands an Zeichen hat
tripel_str = test_str.substr(0,anzahlschleifendurchgaenge*abstand);
trace("Die Zeichenkette, die Trennzeichen bekommen soll: " + tripel_str);
zaehler = 0;
var teilstr:Array = [];
var ergebnis_str:String = "";
for (i=1; i<=anzahlschleifendurchgaenge; i++) {
//Teilstrings in Länge des Abstandes werden erzeugt und das Trennzeichen hinten angefügt
teilstr[i] = tripel_str.substr(zaehler,abstand);
if (i<anzahlschleifendurchgaenge) {
teilstr[i] += eingefuegteszeichen;
}
trace("Teilstring " + i + ": " + teilstr[i]);
zaehler += abstand;
//Teilstrings werden erneut zusammen gefügt
ergebnis_str += teilstr[i];
}
trace("\nErgebnis-String: " + ergebnis_str);
return ergebnis_str;
}
}
else
{
ergebnis_str = test_str;
return ergebnis_str;
}
}