StringField():
Code:
function StringField(string, index, separator){
return string.split(separator)[index-1];
}
for (var k=1;k<=6;k++) //Beispiel aus der PB Hilfe
{
alert(StringField("Hello I am a splitted string", k, " "));
}
Mid():
JavaScript unterstützt keine optionalen Parameter. Zumindest nicht in der gängigen Definition function(var=1).
Funktionsname.arguments.lenght gibt die Anzahl der übergebenen Parameter zurück. Somit lässt sich ermitteln, ob der optinale Parameter Lenght übergeben wurde, oder nicht. Falls nicht, wird Length die Länge des übergebenen Strings zugeteilt.
edit: Uuuh, RSBasic, Tertiärer Operator. Das ist natürlich eleganter als ein krudes
If/Else. Wenn sich ein PBler aber mal den Parser anschauen möchte hat er es mit If/Else wahrscheinlich leichter alles zu verstehen.
Code:
function Mid(String, Start, Length){
if (Mid.arguments.length==2){ Length= String.length; }
return String.substr(Start-1, Length);
}
alert(Mid("Hello", 2)) // wird "ello" anzeigen
alert(Mid("Hello", 2, 1)) // wird "e" anzeigen
LCase() & Ucase()
Code:
function LCase(string){
return string.toLowerCase();
}
function UCase(string){
return string.toUpperCase();
}
alert(LCase("Alles Klein gesChrIeBen"));
alert(UCase("Alles Groß gesChrIeBen")); //Hier wird wohl versucht das neue große "ß" auszugeben.
//Mein Browser zeigt allerdings nur Murks an. Evtl. eine Weiche einbauen?
Len():
Code:
function Len(string){
return string.length;
}
alert(Len("Hallo")); //5
alert(Len("Hallo Welt")); //10
Chr() & Asc()
Code:
function Chr(number){
return String.fromCharCode(number)
}
function Asc(c){
return c.charCodeAt(0)
}
alert(Chr(33));
alert(Asc("!"));
FindString():
Code:
function FindString(Haystack, Needle, StartPosition, Modus){ //FindString(String$, SuchString$ [, StartPosition [, Modus]])
if (FindString.arguments.length<4) {Modus = PB_String_CaseSensitive; } //CaseSensitive ist Standardmodus
if (FindString.arguments.length==2){ StartPosition=0; } else { StartPosition-1;} //Startposition is standardmäßig 0. "-1", weil PB bei 1 anfängt und JS bei 0
switch (Modus){
case PB_String_NoCase:
Haystack=Haystack.toLowerCase();
return Haystack.substr(StartPosition, Haystack.length).indexOf(Needle.toLowerCase())+StartPosition+1;
break;
default:
return Haystack.substr(StartPosition, Haystack.length).indexOf(Needle)+StartPosition+1;
break;
}
}
alert(FindString("Purebasic,Bas", "Bas")); // wird 11 ausgeben, da Case Sensitive Standard option ist
alert(FindString("Bas456789Bas", "bAs",7,PB_String_NoCase)); // wird 10 ausgeben
Wie handlest du Konstanten? Der Modus
#PB_String_CaseSensitive/ #PB_String_NoCase fehlt hier noch. Das ist eine einfache If-Abfrage, aber ich weiß nicht welchen Input ich erwarten soll.
edit: OK. FindString angepasst. Es muss darauf geachtet werden dass die Konstanten auch definiert sind. Ansonsten klappt das nicht. Evtl sollte man die Funktion mit RSBasic's
if (typeof(Param)=='undefined') erweitern.
Ich editier hier fleißig weiter^^
InsertString()Code:
function InsertString(String, Insert, Position){
return String.substring(0,Position-1) + Insert + String.substr(Position-1, String.length);
}
alert (InsertString("Hello !", "World", 7)) ; //Wird "Hello World!" anzeigen
alert (InsertString("Hello !", "World", 1)) ; //Wird "WorldHello !" anzeigen