Wie krieg ich ein replace für einen string?

Liebe/-r Experte/-in,
ich habe folgendes javascript:
##############

function nachname_einfuegen()

{

var alterinhalt=document.getElementById(‚nachrichtentextfeld‘).value;

var neuerinhalt=document.getElementById(‚nachname‘).value;

var teilinhalt = ‚Sehr geehrter Herr Dr. ,‘;var inhalt = ‚Sehr geehrter Herr Dr. ‚+neuerinhalt+‘,‘;

alert('alterinhalt: '+alterinhalt);

alert('teilinhalt: '+teilinhalt);

alert('inhalt: '+inhalt);

var neuevariable=alterinhalt.replace(teilinhalt,inhalt);

alert(neuevariable);

//document.getElementById(‚nachrichtentextfeld‘).value=inhaltneu;

}

+++++++++++++++++++++++++++++++++

Was ich eigendlich möchte, ist ein simples replace. Also einen teil eines textareas auslesen und mit dem Wert eines textfeldes überschreiben.
Die alerts zu Testzwecken geben bis auf die letzte alles richtig aus. Also hakts irgendwo am replace…

var alterinhalt liesst halt den Wert es textareas aus. OK
var neuerinhalt liesst halt den Wert es textfeldes aus. OK
Die neue Variable var inhalt ist das neue Textfragment (ua aus dem neuerinhalt).

Das textfeld ist halt vorbelegt mit Sehr geehrter Herr Dr., Und das ganze soll ersetzt werden durch den im Textfeld eingegeben Nachnamen. ZB Sehr geehrter Herr Dr. Mustermann,
Danke für eure Mühe

Hallo,

wenn du replace mit Strings benutzt, wird der Suchstring ganz genau verglichen. In deinem Beispiel ist nach Dr. direkt ein Komma (ohne Leerzeichen), im Suchstring dagegen hast du dort ein Leerzeichen notiert und deswegen passt er nicht und es wird auch nichts ersetzt.

Ggf. kann es auch sinnvoller sein, mit regulären Ausdrücken zu matchen, also z. B. sowas wie /^(Sehr(\s+\w+)+)\s*,/

Gruß,

Amica

hallo oliver,

vielleicht helfen dir die zwei beiden?

http://www.google.de/search?q=javascript+replace
http://de.selfhtml.org/javascript/objekte/string.htm…

gruß
people

replace’ erstes argument ist ein regulärer ausdruck, kein string.

Danke für Deine superschnelle Antwort!

Irgendwie habe ich Tomaten auf den Augen-
Was genau meinst Du?
Ich habe mal die beiden relevanten Passagen untereinander gestellt:

http://screencast.com/t/yFWmFeKAT0

Der entscheidende Part ist doch „Sehr geehrter Herr Dr. ,“
Und der sieht im Screenshot gleich aus. Also beide mit Leerzeichen.

Und reg Expressions? Hm wird schwierig…
Denn es gibt uU ja noch mehr. Frau Dr., Frau Dr. med., Herr,…
Dann muss es immer heißen Sehr geehrter Herr Mustermann oder halt Sehr geehrte Frau Dr. Mustermann usw.

Also kann ich keine Länge angeben. Wenn ich es richtig deute, wird doch in der Variable „alterinhalt“ der Part „Sehr geehrter Herr Dr. ,“ Durch „Sehr geehrter Herr Dr. Mustermann,“ (bei eingabe von Mustermann im textfeld ersetzt.
Gruß
Oliver

@people: Das stimmt so nicht ganz. Das erste Argument ist ein String ODER ein RegExp, je nachdem wie man ersetzen möchte. (http://interglacial.com/javascript_spec/a-15.html#a-…)

Wie regexpression?
Das würde heißen sowas wie
var alt=„hugo geht nach hause“;
var neu =„anton“;
var ausgabe = alt.replace(alt,neu);
geht nicht?

alterinhalt.replace(/^(\w+(\s+\w+.?(-\w+.?)*)*)\s*,/, „$1 Mustermann,“)

Sollte sowohl bei „Sehr geehrter Herr Dr.-Ing.,“ als auch bei „Hallo ,“ funktionieren.

Hallo Oliver,

wenn ich das richtig verstanden habe, funktioniert alles soweit, nur im

alert(neuevariable);

gibt es eben nicht den Textinhalt, den es hätte haben sollen? Was für ein Ergebnis liefert dieses Alert, und wie sieht der erwartete Text aus?

MfG

Mein Problem ist,
dass danach nich eine kleine Fusszeile mit „Mit freundlichem Gruß usw.“ kommt.

Einfach den ersten part überschreiben geht.

Hi,

dass nen ich mal fix! Danke!
Also:
rauskommen soll:

Sehr geehrter Herr Dr. Name_aus_erstemeingabefeld (zB Mustermann),
Rauskommen tut im Prinzip das selbe wie in alterinhalt steht. Also
Sehr geehrter Herr Dr. ,
Im alert stehts auch falsch drin. Das komische ist, dass die Testalerts vorher richtig aussehen. Nur beim replace gehts verloren.

Ich versteh nicht, was du damit meinst.

Bitte schildere deine Probleme nachvollziehbarer. Das beinhaltet auch den Vergleich zwischen Soll- und Ist-Zustand.

Also: ich hab das mal ausprobiert…

sollte eigentlich gehen:

 Ohne\_Titel\_1


 function nachname\_einfuegen()
 {
 var alterinhalt=document.getElementById('nachrichtentextfeld').value; 
 var name=document.getElementById('nachname').value; 

 var neuerinhalt=alterinhalt.replace(",", " " + name + ","); 

 document.getElementById('nachrichtentextfeld').value=neuerinhalt; 
 }

 nachrichtentextfeld:
nachname:

Ich hoffe, ich hab das Ziel des ganzen verstanden :wink:

Am Besten wäre natürlich, wenn du in der Vorbelegung einen Platzhalten hättest. (zb „%“) dann könntest du den simpel durch den Namen ersten.

also angenommen der Text ist
„Sehr geehrter Herr Dr. %,“

Dann würde das ganz gut gehen:

function nachname\_einfuegen()
 {
 var ele = document.getElementById('nachrichtentextfeld');
 var name=document.getElementById('nachname').value; 
 ele.value=ele.value.replace("%", name); 
 }

MfG

entschuldige,

das erste argument muss kein regulärer ausdruck sein (ich habs nur immer so verwendet).

eben hab ich folgendes in meine browseradresszeile getippt (windows firefox):
javascript:str=‚hugo test‘;alt=‚hugo‘;neu=str.replace(alt,‚egon‘);alert(neu);
…und er sagt ganz brav: „egon test“
also versteh ich vielleicht einfach dein problem nicht?

gruß
people

Hi,
Ist:
also ich habe ein vorbelegtes Textarea:
"Sehr geehrter Herr Dr. ,

Mit freundlichem Gruß

Oliver Eikel"
und ein Textfeld wo ich einen Namen eingebe.

Mein Script gibt die alerts vor dem replace korrekt aus. Aber nach dem replace steht im

textarea dasselbe wie vorher.

Soll:
Also ich habe ein vorbelegtes Textarea:
"Sehr geehrter Herr Dr. ,

Mit freundlichem Gruß

Oliver Eikel"
und ein Textfeld wo ich einen Namen eingebe.

Herauskommen soll im Ergebnis:
Ein Ersetzten des Teils „Sehr geehrter Herr Dr. ,“ im textarea durch

den im textfeld eingegeben Namen:

"Sehr geehrter Herr Dr. Mustermann,

mfG
Oliver Eikel"

Ich hoffe es ist nun klarer?

Mit festen strings geht bei mir auch.
Irgenwo muss ein fehler beim Zuweisen / auslesen sein.
Deswegen habe ich hier gefragt. :wink:

Das wäre ja zu einfach. :wink:

Nein im Ernst. Notfalls mache ich es so, klar. Aber irgendwie hat mich nun auch der Ehrgeiz gepackt.
Komisch ists schon. Die Werte werden korrekt angezeigt und beim replace scheiterts?

javascript:str=‚hugo test‘;alt=‚hugo‘;neu=‚egon‘;neustr=str.replace(alt,neu);alert(neustr);
=> „egon test“

Ich hoffe es ist nun klarer?

Der Teil war von Anfang an klar. Was passt dir nicht an meiner Lösung bzw. was bekommst du dort raus und was stimmt daran nicht? Das meine ich mit Soll und Ist.

var xyz = alterinhalt.replace(/^(\w+(\s+\w+.?(-\w+.?)*)*)\s*,/, „$1 „+neuerinhalt+“,“)
document.getElementById(‚nachrichtentextfeld‘).value=xyz;
(neuerinhalt ist die variable aus dem Textfeld.
So gehts erstmal mit Herr! 100% + 1000 Dank!
Nun müsste ich nich die Lösung finden für „Frau Dr.“
Dabei wird der Nachname verschluckt. „Frau“ geht.
Daher nun für mich zum Verständnis: Was zur Hölle passiert da??
Bestelle ich bei jeder Ausführung ne Waschmaschine bei Amazon? :wink:

Mit reg expressions stehe ich ziemlich auf Kriegsfuss,
^ bedeutet glaube ich „starte am Anfang“.
Und dann? Ich kenne es nur so, dass man zB in php nach „Sehr“ sucht und das als startpunkt nimmt. Dann sucht man zB nach „Dr.“ und nimmt dass als Endpunkt. Danach sagt man ersetzt alles von-bis durch.
Gruß
Oliver