Ein erster Ansatz für das leidige Problem. Wer den Text in das Textfeld eingegeben oder reinkopiert hat, der kann nun unten einmal auf den Link "[0] bis [9] in Text wandeln" klicken. Damit werden auf jeden Fall [0] bis [9] (wie hier gerade demonstriert) weiterhin so wie geschrieben angezeigt. So ganz effektiv ist das Ding noch nicht am Laufen, es fehlen halt noch 10 bis 99 und wer ein zweites Mal draufdrückt, bekommt am Ende Mansch. Aber zum Einen war es ja meistens das Problem mit [0] und [1] und zum Anderen werkel ich ja dran…
P. S. Derzeit nur im Newtopic, gleich setzte ich es auch noch nach Modify und Newposting.
BTW: Vielleicht möchte ja wer von den hellen Köpfen das erledigen. Es gibt sicher genug hier, die das besser und schneller hinbekommen. Bisher sieht das so aus:
function CodeCheck() {
var message = document.post.body.value;
var letters = message.length;
var search = "";
var temp = "";
var cutpoint = 0;
var i = 0;
for(; i < letters-1; i++) {
search = message.substring(i, i+3);
for(x = 0; x < 10; x++) {
if(search == '['+x+']') {
temp += message.substring(cutpoint, i) + '\['+x+']';
cutpoint = i+3;
}
}
}
message = temp + message.substring(cutpoint, i+3);
document.post.body.value = message;
return;
}
Das nimmt wie gesagt erst mal nur 0 bis 9 mit. Vielleicht hat ja wer eine Idee, wie das hübscher aussehen könnte und wie es effektiv auch für 10 bis 99 angewandt werden kann. Dabei gilt [ x ] wird als Smily angezeigt \ [ x ] so wie es sein soll (ohne Leerzeichen natürlich).
Lass uns doch mal schauen (dabei kann ich gar kein JavaSkript :) )
function CodeCheck() {
var message = document.post.body.value;
//var letters = message.length; // hier EDIT
var search = "";
var temp = "";
var temp2 = ""; // Hier Edit
var cutpoint = 0;
//var i = 0; // Hier EDIT
for(i=0; i < message.length-1; i++) { // Hier EDIT
search = message.substring(i, i+3);
for(x = 0; x < 10; x++) {
if(search == '['+x+']' && (i==0 || message[i-1] != '\\')) { // hier EDIT!
temp += message.substring(cutpoint, i) + '\['+x+']';
cutpoint = i+3;
}
}
temp = temp + message.substring(cutpoint, message.length);
// dies eingefuegt fuer 4er
for(i=0; i < temp.length-4; i++) {
search = message.substring(i, i+4);
for(x = 10; x < 100; x++) {
if(search == '['+x+']' && (i==0 ||message[i-1] != '\\')) { // hier EDIT!
temp2 += message.substring(cutpoint, i) + '\['+x+']';
cutpoint = i+4;
}
}
}
temp2 = temp2 + message.substring(cutpoint, temp.length);
document.post.body.value = temp2;
return;
}
Hm... Da klappt bestimmt nicht...
MoKrates
Ansonsten waer es einfach, einfach irgendwo darueber zu informieren, dass man die Klammern mit einfachem Quoting kricht. :)
MoKrates
Hm… Da klappt bestimmt nicht…
Es sieht auf jeden Fall bunt aus.
Hab aber auch was Neues und so lange jetzt keiner ein Array baut, was einen Inhalt größer als 9999999 hat oder dummerweise etwas wie [eine Ziffer und ein bis sechs Buchstaben] verwendet, klappt das hier schön:
Edit²: Noch mal Müll rausgenommen.
<SCRIPT LANGUAGE="JavaScript">
<!--
function x() {
var message = document.post.body.value ;
var letters = message.length;
var temp = "";
var cutpoint = 0;
for(i=0; i < letters-1; i++) {
if(message.charAt(i) == "[") { // [] Einheiten finden.
if(message.charAt(i-1) != "\\") { // Prüfe ob nicht bereits backlash gesetzt wurde.
var x=0;
var number = false;
while(!number && x < 10) { // Prüfe ob es sich um eine Zahl handelt
if(message.charAt(i+1) == x) number = true;
x++;
}
if (number) { // Füge backslash ein
for(y=1; y<8; y++) { // Suche nach Ende der Einheit
if(message.charAt(i+y) == "]") {
temp += message.substring(cutpoint, i) + '\[' + message.substring(i+1,i+y)+ ']';
cutpoint = i+y+1;
i=i+y-1;
break;
}
}
}
}
}
}
message = temp + message.substring(cutpoint, i+3);
document.post.body.value = message;
return;
}
// End -->
</SCRIPT>