Source-Code


<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>Spiel mit String</title>
<LINK REL="SHORTCUT ICON" HREF="..\picture_library\favicon.ico">
<style>
ol {
list-style-type: none; /* Entfernt die Standardnummerierung */


margin: 0; /* Setzt den äußeren Abstand auf 0 */
padding-left: 5px; /* Verringert den inneren Abstand (links) */

}
ol li::before {
content: counter(seoZaehler, lower-alpha) ") "; /* Fügt die Klammer und das Leerzeichen hinzu */



counter-increment: seoZaehler; /* Inkrementiert den Zähler */
}
</style>
<script>
let Zeichenkette = "Es sind 38 Zeichen in der Zeichenkette";
let Counter = 1;
function infos(Argument)
{ if(Counter != 1) document.getElementById('Ausgabe2').innerHTML += "<br><br><br>";

schreibe(1,'Ausgabe2',Counter++ + ". Klick" ) ;

schreibe(1,'Ausgabe2',"<br>var Argument = " + Argument) ;

schreibe(1,'Ausgabe2', "<br><br>LENGTH<br>------------") ;

schreibe(1,'Ausgabe2', "<br>var Argument = " + Argument.length );
}


function schreibe(wie,wo,was)
/* schreibt in ein "Ausgabefeld" (Tag mit der id="wo") "wie" ist 0 neu oder 1 erg?nzt den Text mit "was" */
{ /* Ersetzt Umlaute mit HTML-Notation */

if(wie==0){
document.getElementById(wo).innerHTML = was;
}
else{
document.getElementById(wo).innerHTML += '<br>' + was;
}
}

function ZeichenCode(wo,Liste)
{

let Test = document.getElementById(wo).innerHTML; /* Die aktuelle Ausgabe pr?fen */

if(Liste.length == 0) /* Wenn man keine Eingabe machte wird ein Std.String angezeigt */
{Liste = String.fromCharCode(9786,9787,9829,9830,9827,9824,8226,9688,9675,9689,9794,9792,9834,9835,9788,9658,9668,8597,8252,182,167,9644,182,8616,8593,8595,8594,8592,8735,8596,9650,9660);
document.getElementById('TA').value = Liste;
}


if( Test.length < 25)

{


/*alert(Test + " " + Test.length);*/


for(i=0;i<Liste.length;i++)


{

schreibe(1,wo,Liste[i] + " hat den Code " + Liste.charCodeAt(i));


}


document.getElementById('BTTN').value = "Lade die Funktion!";

}

else

{


schreibe(0,wo,'<br>AUSGABEFELD 3<br>');


document.getElementById('BTTN').value = "Starte die Funktion!";


document.getElementById('TA').value = "";

}

}


</script>

</head>
<body bgcolor=#ddffdd>
<h1>Hier wird aufgelistet was mit 'String' in JS möglich ist</h1>
<seo id="Ausgabe">
<br>AUSGABEFELD 1 wurde beim Start beschrieben<br>
</seo>
<script>
schreibe(1,'Ausgabe',"Die Variable 'Zeichenkette' liegt im HEAD, wie auch alle Funktionen.<br>Deklaration der Variablen Zeichenkette = " + Zeichenkette);


schreibe(1,'Ausgabe',"<h2>Eigenschaften</h2>");
schreibe(1,'Ausgabe',"<b>Str.length</b>" );
schreibe(1,'Ausgabe',"<br>Länge der Zeichenkette = " + Zeichenkette.length);

schreibe(1,'Ausgabe',"<b><br>Str.constructor</b>" );
var Xx = Zeichenkette.constructor;
schreibe(1,'Ausgabe',"<br>Konstruktor der Zeichenkette = " + Xx);

schreibe(1,'Ausgabe',"<h2>Methoden</h2>");

schreibe(1,'Ausgabe',"<b>Str.charAt(4)</b> Startet bei 0" );
schreibe(1,'Ausgabe',"<br>Zeichen 5 in Zeichenkette = " + Zeichenkette.charAt(4));


schreibe(1,'Ausgabe',"<br><br><b>Str[0]</b> Startet bei 0" );
schreibe(1,'Ausgabe',"<br>Zeichen 1 in Zeichenkette = " + Zeichenkette[0]);


schreibe(1,'Ausgabe',"<br><br><b>Str.charCodeAt(4)</b> Startet bei 0" );
schreibe(1,'Ausgabe',"<br>Unicode-Wert des 5. Zeichens in Zeichenkette = " + Zeichenkette.charCodeAt(4));


schreibe(1,'Ausgabe',"<br><br><b>Str.concat</b>(' Hallo') " );
schreibe(1,'Ausgabe',"<br>Verbindet Zeichenketten = " + Zeichenkette.concat(' Hallo'));


schreibe(1,'Ausgabe',"<br><br><b>Str.indexOf('ei')</b> startet bei 0 " );
schreibe(1,'Ausgabe',"<br>Position von Wert in Zeichenketten = " + Zeichenkette.indexOf('ei'));
schreibe(1,'Ausgabe',"<br>Position von Wert das es nicht gibt in Zeichenketten = " + Zeichenkette.indexOf('17'));

schreibe(1,'Ausgabe',"<br><br><b>Str.lastIndexOf('ei')</b> startet bei 0 " );
schreibe(1,'Ausgabe',"<br>Position von Wert in Zeichenketten = " + Zeichenkette.lastIndexOf('ei'));



schreibe(1,'Ausgabe',"<br><br><b>Str.match(/e\S{1}/gi) </b>sucht mit Regex nach allen vorkommen. Im Beispiel mit 'e' (global und caseinsensitiv) wenn noch ein weiteres Zeichen folgt, aber nicht, wenn ein Leerzeichen dabei ist") ;
treffer = Zeichenkette.match(/e\S{1}/gi);
schreibe(1,'Ausgabe',"<br>Anzahl Treffer " + treffer.length);
for(i=0;i<=8;i++)
{
schreibe(1,'Ausgabe',"<br>" + i + " treffer ist: " + treffer[i]);
}


schreibe(1,'Ausgabe',"<br><br><b>Str.replace(/e\S{1}/gi,'MIT') </b>sucht mit Regex nach allen vorkommen. Im Beispiel mit 'e' (global und caseinsensitiv) wenn noch ein weiteres Zeichen folgt, aber nicht, wenn ein Leerzeichen dabei ist und ersetzt es mit Regex 'MIT'" );
schreibe(1,'Ausgabe',"<br>Anzahl Treffer " + Zeichenkette.replace(/e\S{1}/gi,'MIT'));


schreibe(1,'Ausgabe',"<br><br><b>Str.search(/z\S{1}/gi)</b> gleich wie match, aber gibt die erste Trefferposition " );
schreibe(1,'Ausgabe',"<br>Treffer-Position: " + Zeichenkette.search(/z\S{1}/gi));

schreibe(1,'Ausgabe',"<br><br><b>Str.slice(von, bis)</b> fast wie mid: Ermittelt Teilstring " );
schreibe(1,'Ausgabe',"<br>Str.slice(2, 5): " + Zeichenkette.slice(1, 5));
schreibe(1,'Ausgabe',"<br>Str.slice(-5): " + Zeichenkette.slice(-5));
schreibe(1,'Ausgabe',"<br>Str.slice(25): " + Zeichenkette.slice(25));


schreibe(1,'Ausgabe',"<br><br><b>Str.split(/e\S{1}/gi)</b> sucht mit Regex nach allen Vorkommen und teilt den String dort auf" );
treffer = Zeichenkette.split(/e\S{1}/gi);
schreibe(1,'Ausgabe',"<br>Anzahl Teile " + treffer.length);
for(i=0;i<=8;i++)
{
schreibe(1,'Ausgabe',"<br>" + (i+1) + ". Teil ist: " + treffer[i]);
}


schreibe(1,'Ausgabe',"<br><br><b>Str.substr(von, anzahl)</b> wie mid oder fast wie slice: Ermittelt Teilstring " );
schreibe(1,'Ausgabe',"<br>Str.substr(2, 5): " + Zeichenkette.substr(2, 5));
schreibe(1,'Ausgabe',"<br>Str.substr(-5): " + Zeichenkette.substr(-5));
schreibe(1,'Ausgabe',"<br>Str.substr(25): " + Zeichenkette.substr(25));


schreibe(1,'Ausgabe',"<br><br><b>Str.substring(von, anzahl)</b> wie mid oder fast wie slice: Ermittelt Teilstring " );
schreibe(1,'Ausgabe',"<br>Str.substring(2, 5): " + Zeichenkette.substring(2, 5));
schreibe(1,'Ausgabe',"<br>Str.substring(-5): " + Zeichenkette.substring(-5));
schreibe(1,'Ausgabe',"<br>Str.substring(25): " + Zeichenkette.substring(25));


schreibe(1,'Ausgabe',"<br><br><b>String Umwandlung</b>" );
schreibe(1,'Ausgabe',"<br>Str.toLowerCase(): " + Zeichenkette.toLowerCase());
schreibe(1,'Ausgabe',"<br>Str.toUpperCase(): " + Zeichenkette.toUpperCase());
schreibe(1,'Ausgabe',"<br>Str.trim(): " + Zeichenkette.trim());
schreibe(1,'Ausgabe',"<br><br><b>String Umwandlung Obsolet</b>");
schreibe(1,'Ausgabe',"<br>Str.big(): " + Zeichenkette.big());
schreibe(1,'Ausgabe',"<br>Str.blink(): " + Zeichenkette.blink());
schreibe(1,'Ausgabe',"<br>Str.bold(): " + Zeichenkette.bold());
schreibe(1,'Ausgabe',"<br>Str.fixed(): " + Zeichenkette.fixed());
schreibe(1,'Ausgabe',"<br>Str.fontcolor(): " + Zeichenkette.fontcolor('red'));
schreibe(1,'Ausgabe',"<br>Str.fontsize(): " + Zeichenkette.fontsize(5));
schreibe(1,'Ausgabe',"<br>Str.italics(): " + Zeichenkette.italics());
schreibe(1,'Ausgabe',"<br>Str.small(): " + Zeichenkette.small());
schreibe(1,'Ausgabe',"<br>Str.strike(): " + Zeichenkette.strike());
schreibe(1,'Ausgabe',"<br>Str.sub(): " + Zeichenkette.sub());
schreibe(1,'Ausgabe',"<br>Str.sup(): " + Zeichenkette.sup());
schreibe(1,'Ausgabe',"<br><br><b>Kombiniert</b>");
schreibe(1,'Ausgabe',"<br>Str.big().bold().fontcolor('blue'): " + Zeichenkette.big().bold().fontcolor('blue'));


schreibe(1,'Ausgabe',"<h2>Sortieren</h2>");

schreibe(1,'Ausgabe',"<b>Array sortieren. Zuordnung-> let Gruppe = ['äää' ,'eins','zwei','drei','vier','Fünf', 'ahh'] " );

let Gruppe = ['äää' ,'eins','zwei','drei','vier','Fünf', 'ahh'];

schreibe(1,'Ausgabe',"<br><b>1) Unsortiet:</b> " + Gruppe);
schreibe(1,'Ausgabe',"<br>Anzahl Teile im Array " + Gruppe.length);

for(i=0;i<=8;i++)
{
schreibe(1,'Ausgabe',"<br>" + i + ". Array Teil ist: " + Gruppe[i]);
}

schreibe(1,'Ausgabe',"<br><br><b>2) Sortiet:</b> " + Gruppe.sort());
schreibe(1,'Ausgabe',"<br>Anzahl Teile im Array " + Gruppe.length);
for(i=0;i<=8;i++)
{
schreibe(1,'Ausgabe',"<br>" + i + ". Array Teil ist: " + Gruppe[i]);
}

schreibe(1,'Ausgabe', "<br><br><b>3) Sortiet nach DeutschRegel:</b> " );

document.getElementById('Ausgabe').innerHTML += Gruppe.sort(function (a, b){return a.localeCompare(b, "de-DE");});

schreibe(1,'Ausgabe',"<br>Anzahl Teile im Array " + Gruppe.length);
for(i=0;i<=8;i++)
{
schreibe(1,'Ausgabe',"<br>" + i + ". Array Teil ist: " + Gruppe[i]);
}

schreibe(1,'Ausgabe',"<br><br><b>UNICODE </b>String.fromCharCode(64, 65, 40) (auf Gross/Kleinschrift achten!)") ;
schreibe(1,'Ausgabe',"<br>Gibt eine Zeichenkette bestehend aus den codes = " + String.fromCharCode(64, 65, 40));

</script>


<br><br>
<h2>Startet info('123456')</h2>
<input type="button" onclick="infos('123456');" value="Starte die Funktion!" />
<seo id="Ausgabe2">
<br>AUSGABEFELD 2<br>
</seo>

<br><br>
<h2>Link</h2>
<a href=https://wiki.selfhtml.org/wiki/JavaScript/Objekte/String target=_blank>JavaScript/Objekte/String</a>
<br>
*charAt() (Zeichen an einer Position ermitteln)<br>
*charCodeAt() (UTF-16-Zeicheneinheit an einer Position)<br>
*concat() (Zeichenketten zusammenfügen)<br>
*fromCharCode() (UTF-16-Zeicheneinheit erzeugen)<br>
*indexOf() (Position einer Zeichenkette ermitteln)<br>
*lastIndexOf() (letzte Position eines Zeichens ermitteln)<br>
*localeCompare() (vergleichen)<br>
*match() (Regulären Ausdruck anwenden)<br>
*replace() (Regulären Ausdruck anwenden und ersetzen)<br>
*search() (Suchen mit Regulärem Ausdruck)<br>
*slice() (Teil aus Zeichenkette extrahieren)<br>
*split() (Zeichenkette aufsplitten)<br>
*substr() (Teilzeichenkette ab Position ermitteln)<br>
*substring() (Teilzeichenkette ermitteln)<br>
*toLowerCase() (alles klein schreiben)<br>
*toUpperCase() (alles gross schreiben)<br>
*trim() (Leerzeichen entfernen)<br>

<br><br>
<a href=https://wiki.selfhtml.org/wiki/JavaScript/Objekte/RegExp target=_blank>JavaScript/Objekte/<b>RegEx</b></a>
<br><br><br>

<h2>Source-Code:</h2>
<iframe src="PHP_Zeigen.php" width=700px height=500px scrolling="yes" wordwarp="yes" style="background-color:#ffffff"></iframe>

<br><br>
<h2>Startet ZeichenCode(wo,was)</h2>
Listet die Zeichen im Textfeld und ihren Unicode auf<br>
<textarea id="TA" cols=40 rows=1 style="font-size: 200%"></textarea>
<br>

<input type="button" id=BTTN onclick="ZeichenCode('Ausgabe3',document.getElementById('TA').value)" value="Starte die Funktion!">

<seo id="Ausgabe3">
<br>AUSGABEFELD 3<br>
</seo>
<br><br>
<h2>Zahlen im String:</h2>
<pre>Fliesskomma = "987.56";
Ganzzahl = "55";
Keinzahl = "Seo";</pre>
<script>
Fliesskomma = "987.56";
Ganzzahl = "55";
Keinzahl = "Seo";
try
{

document.write("a) (Ganzzahl + 111) = " + (Ganzzahl + 111));

document.write("<br>b) (Ganzzahl * 1 + 111) = " + (Ganzzahl * 1 + 111));

Ganzzahl *= 1;

document.write("<br>c1) Ganzzahl *= 1");

document.write("<br>c2) (Ganzzahl + 111) = " + (Ganzzahl + 111));

}
catch(e)
{

document.write("Ganzzahl Fehler " + e);
}

</script>

<br>

<br>Die Variable <i>Ganzzahl</i> wurde mit der Zeichenkette "55" geladen (achte auf die Gänsefüsschen) und ist somit eine Stringvariable. Man kann in JS Variablen nur mit let, var, const oder gar nicht deklarieren, aber das hat eigentlich bloss mit dem Gültigkeitsbereich und nicht mit dem Typ zu tun.

<br>Den Typ erhält die Variable erst mit der Initialisation (Wertzuordnen), der aber auch nicht in Stein gemeisselt ist und sich im Verlauf des Scripts auch ändern kann.


<ol style="counter-reset: seoZaehler;">

<li>Da der Operator '+' auch zur Verkettung von Strings benutzt wir und die Variable <i>Ganzzahl</i> als String "geladen" wurde, werden hier die 2 Elemente verkettet

<li>Durch die Multiplikation verwandelt sich die Variable <i>Ganzzahl</i> in ein Integer und das Plus wird zur Addition.

<li>Erbring den Beweis, dass die Variable <i>Ganzzahl</i> durch die Multiplikation in ein Integer verwandelt wurde, somit wird die selbe Schreibweise wie in a) von einer Stringsverkettung zur Addition.

</ol>




<br>Das gleiche Experiment aber mit einer Stringvariablen ohne numerischen Inhalt.

<br>Es wird zwar kein Fehler oder Programmunterbruch generiert, jedoch ist ausser bei der Stringverkettung das Resultat natürlich unsinnig (NaN = Not-A-Number)<br>
<script>
try
{

document.write("a) (Keinzahl + 111) = " + (Keinzahl + 111));

document.write("<br>b) (Keinzahl * 1 + 111) = " + (Keinzahl * 1 + 111));

Keinzahl *= 1;

document.write("<br>c1) Keinzahl *= 1");

document.write("<br>c2) (Keinzahl + 111) = " + (Keinzahl + 111));

}
catch(e)
{

document.write("Keinzahl Fehler " + e);
}


</script>



<h3>isNaN(x)</h3>

Somit ist man bei der ersten Anweisung, die auf <b>NaN</b> prüft angekommen:<br>

Sehr nützlich, da tatsächlich auf die Abwesenheit von Zahlen im String geprüft wird.<br>
<script>


document.write("isNaN(Ganzzahl) = " + isNaN(Ganzzahl));

document.write("<br>isNaN(Fliesskomma) = " + isNaN(Fliesskomma));

document.write("<br>isNaN(Keinzahl) = " + isNaN(Keinzahl));


document.write('<br>isNaN("00000") = ' + isNaN("00000"));

document.write('<br>isNaN("ab123") = ' + isNaN("ab123"));

document.write('<br>isNaN("123ab") = ' + isNaN("123ab"));



</script>



<h3>typeof(x)</h3>


Etwas mehr Informationen gibt <b>typeof(x)</b>, berücksichtigt aber nicht den Inhalt eines Strings<br>

Somit hat man auch eine Auflistung aller möglichen Datentypen in JS... obwohl "object" mehrere Typen zusammenfasst und 'number' auch keine Unterscheidung zwischen int und float macht.<br>
<script>


document.write("typeof(55) = " + typeof(55) );

document.write("<br>typeof(5.5) = " + typeof(5.5) );

document.write("<br>typeof('55') = " + typeof("55") );

document.write("<br>typeof([55]) = " + typeof([55]) );


document.write("typeof(true) = " + typeof(true) );



document.write("<br>typeof(1n) = " + typeof(1n) );


document.write("<br>typeof(BigInt(1)) = " + typeof(BigInt(1)) );

document.write("<br>Test = 6n / BigInt(3)" + (6n / BigInt(3) ) );



document.write("<br>typeof(ff()) = " + typeof(ff()) + " hängt vom return(Wert) ab" );



document.write("<br>typeof(Symbol()) = " + typeof(Symbol()) );



document.write("<br>Test:<br>var1 = Symbol(5.5);<br>var2 = Symbol(5.5);" );


var1 = Symbol(5.5);

var2 = Symbol(5.5);

try

{

document.write(var1);

}

catch(e)

{

document.write("<br>document.write(var1); FEHLER: " + e);

}

document.write("<br>var1 == var2 ist " + (var1 == var2) );

document.write("<br>var1 === var2 ist " + (var1 === var2) );



document.write("<br>typeof(unbekannteVariable) = " + typeof(unbekannteVariable) );



function ff()

{return(23);}
</script>



<h3>Number(x)</h3>

Wie der Trick mal 1 Multiplikation wandelt auch <b>Number(x)</b> die Werte in einem String in Zahlen um oder gibt 'NaN' zurück:<br>
<script>


document.write("Number(Ganzzahl) = " + Number(Ganzzahl));

document.write("<br>Number(Fliesskomma) = " + Number(Fliesskomma));

document.write("<br>Number(Keinzahl) = " + Number(Keinzahl));


document.write('<br>Number("00000") = ' + Number("00000"));

document.write('<br>Number("ab123") = ' + Number("ab123"));

document.write('<br>("123ab" * 1) = ' + ("123ab" * 1) );

</script>

<br><br>Aber Number hat noch weitere Methoden, die typeof ergänzen. Hier nur eine kleine Auswahl, aber es ist es Wert <b>Number(x)</b> besser anzuschauen<br>
<script>


document.write("<br>Number.isFinite(10/3) = " + Number.isFinite(10/3));

document.write("<br>Number.isFinite(10/0) = " + Number.isFinite(10/0));

document.write("<br>Number.isInteger(10.25) = " + Number.isInteger(10.25));

document.write("<br>Number.isInteger(10) = " + Number.isInteger(10));

document.write("<br>('10.25' + .75) = " + ('10.25' + .75) );

document.write("<br>(Number.parseFloat('10.25Seo') + .75) = " + (Number.parseFloat('10.25Seo') + .75) );

document.write("<br>Number.parseInt(10.99) = " + Number.parseInt(10.5));

document.write("<br>Number.parseInt('70 Jahre') = " + Number.parseInt('70 Jahre'));

document.write("<br>Zahlenrange in JavaScript von Number.MIN_VALUE bis Number.MAX_VALUE = von " + Number.MIN_VALUE + " bis " + Number.MAX_VALUE);


</script>





<hr>
<br><br>


<input type=button onclick="window.open('https://chepre.servercorner.net:8443/smb/file-manager/list?currentDir=/httpdocs/prg/js&domainId=925');" value="Admin" />
</body>
</html>