Michael N.: strings bearbeiten

Beitrag lesen

Danke für die url aber so wie ich das lese, wandelt escape ein Leerzeichen auf keinen Fall in ein '+' um, sondern in '%20'. Damit kann dann CGI aber nichts anfangen, oder?

Ja stimmt. Normalerweise werden alle Zeichen, die in einer URL nichts zu suchen haben, durch %XX codiert, wobei XX der hexadezimale ASCII-Wert des Zeichens ist. Zusaetzlich darf das Leerzeichen aber auch durch ein + codiert werden. Deshalb ist aber %20 nicht falsch (20hex = 32dec = Leerzeichen). Wenn das CGI-Script nicht voellig stuemperhaft geschrieben ist, sollte es damit zurechtkommen. Man kann auch ein A durch %41 ersetzen (41hex = 65dec). Theoretisch macht das keine Probleme, aber da man es sowieso direkt in der URL angeben darf, sollte man es ruhig tun. (Es gibt zwar keine standardisierte Laengenbegrenzung fuer URLs, aber irgendwo macht ein Webserver trotzdem dicht.)

Wenn Du jetzt unbedingt das + da drin haben willst, musst Du eine Schleife ueber Deinen String bauen, wo Du dann eben nur die Nicht-Leerzeichen codierst. Eine Funktion, um auf die einzelnen Zeichen zuzgreifen (das ist in JS ziemlich umstaendlich, geht in C viel schoener), findest Du auf <../../tecl.htm#a7>.

Calocybe

Hallo Dominique, Hallo Calocybe,
ich find es in JS eigentlich doch nicht sehr umstaendlich, ich hab selbst fuer aehnliche Zwecke schon so was aehnliches codieren muessen und hab kurz mal die Funktion rausgesucht.
Hier ist sie:
<CODE>
function parseCharOff(text, original, copy)
  {
    var rcText = "";
    var lv;
    var lenText = text.length;
    var chr="";
    var org=original.charAt(0);

if ((original.length != 1) (copy.length != 1))
    {
        rcText = text + "#NULL#";
        return rcText;
    }
    for(lv=0;lv < lenText;lv++)
    {
        chr=text.charAt(lv);
        if(chr == org)
        {
            rcText=rcText + copy;
        }
        else
        {
            rcText=rcText + chr;
        }
    }
    return rcText;
}
</CODE>
Noch kurz die Beschreibung:
Rueckgabewert ist der manipulierte Text, falls man versucht eine Zeichen-Kombination zu ersetzen erhaelt man als Fehlerwert den Originaltext mit dem Anhaengsel "#NULL#" zurueck;
der Parameter "text" ist natuerlich der Original-Text;
der Parameter "original" das zu ersetzende Zeichen;
und der Parameter "copy" das Ersatz-Zeichen.

Noch viel Spass mit dem Ersetzen von Zeichen.
Michael N.