replace() - ein Suchkriterium, verschiedener Ersetzungswert – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 00:33:28 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623993#m1623993 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623993#m1623993 <p>Hallo,<br> ich wollte mal fragen, wie ich folgendes hinbekomme:<br> ich habe einen Text - eine Liste vielmehr - und ich habe ein Array mit genausoviel Werten, wie die Liste Einträge hat.<br> Nun möchte ich die Einträge der Liste mit replace() und einem regulären Ausdruck herausfiltern und je nach Treffer Nummer mit dem Wert an entsprechender Stelle im Array ersetzen.<br> Hier mal ein Schema:</p> <pre><code class="block language-javascript"><span class="token keyword">var</span> a <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'0'</span><span class="token punctuation">,</span> <span class="token string">'1'</span><span class="token punctuation">,</span> <span class="token string">'2'</span><span class="token punctuation">,</span> <span class="token string">'3'</span><span class="token punctuation">]</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> l <span class="token operator">=</span> a<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i <span class="token operator"><</span> l<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> textDiv<span class="token punctuation">.</span>innerHTML<span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">[0-9]{5}</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> a<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Mit match() und dem Ausdruck bekomme ich alle Einträge mit alert() angezeigt. Wie kann ich nun jedem Treffer einen anderen Wert verpassen?</p> <p>Grüße, John</p> replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 02:37:39 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623996#m1623996 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623996#m1623996 <p>Hi,</p> <blockquote> <p>Mit match() und dem Ausdruck bekomme ich alle Einträge mit alert() angezeigt. Wie kann ich nun jedem Treffer einen anderen Wert verpassen?</p> </blockquote> <p>Indem du die Treffer an eine Callback-Funktion übergibst, und diese den passenden Ersatzwert heraussuchen und zurückgeben lässt.</p> <p>Weitere Erklärungen und ein Beispiel findest du hier: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter" rel="nofollow noopener noreferrer">https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter</a></p> <p>MfG ChrisB</p> <div class="signature">-- <br> Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/ </div> replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 07:33:57 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623994#m1623994 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623994#m1623994 <p>moin,</p> <blockquote> <p>ich habe einen Text - eine Liste vielmehr - und ich habe ein Array mit genausoviel Werten, wie die Liste Einträge hat.</p> </blockquote> <p>Mach doch gleich ein Objekt <code class="language-javascript">obj<span class="token punctuation">[</span>key<span class="token punctuation">]</span> <span class="token operator">=</span> value<span class="token punctuation">;</span></code></p> <blockquote> <p>Nun möchte ich die Einträge der Liste mit replace() und einem regulären Ausdruck herausfiltern [..]</p> </blockquote> <p>Mit einer callback-Funktion, Beispiel <a href="http://rolfrost.de/office_cms.html" rel="nofollow noopener noreferrer">hier</a>, für die Vorschau werden die Attribute title und descr in das Template gesetzt.</p> <p>Schönen Sonntag!</p> replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 09:40:58 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623995#m1623995 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623995#m1623995 <p>Hallo,</p> <blockquote> <p>Mach doch gleich ein Objekt<br> <code class="language-javascript">obj<span class="token punctuation">[</span>key<span class="token punctuation">]</span> <span class="token operator">=</span> value<span class="token punctuation">;</span></code></p> </blockquote> <p>Nun, es ist ein Text, der strukturiert ist wie eine Liste... Dieser Text ist sehr, sehr lang (nicht von mir geschrieben) und da bedarf es ein paar kleine Änderungen.</p> <p>Grüße, John</p> replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 09:34:39 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623997#m1623997 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623997#m1623997 <p>Hallo,</p> <blockquote> <p>Indem du die Treffer an eine Callback-Funktion übergibst, und diese den passenden Ersatzwert heraussuchen und zurückgeben lässt.</p> </blockquote> <p>Also, so ganz verstehe ich das nicht.</p> <pre><code class="block language-javascript"><span class="token keyword">var</span> a <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'0'</span><span class="token punctuation">,</span> <span class="token string">'1'</span><span class="token punctuation">,</span> <span class="token string">'2'</span><span class="token punctuation">,</span> <span class="token string">'3'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> l <span class="token operator">=</span> a<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i <span class="token operator"><</span> l<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> textDiv<span class="token punctuation">.</span>innerHTML<span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">[0-9]{5}</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token keyword">return</span> x<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Das funktioniert nicht. Sieht jemand den Fehler?</p> <p>Grüße, John</p> replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 12:44:22 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623998#m1623998 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623998#m1623998 <p>Hi,</p> <blockquote> <pre><code class="block language-javascript"></code></pre> </blockquote> <p>var a = ['0', '1', '2', '3'];</p> <blockquote> <p>for (var i = 0, l = a.length; i < l; i++)<br>   {<br>   textDiv.innerHTML.replace(/[0-9]{5}/g, function(){return x[i];});<br>   }</p> </blockquote> <pre><code class="block"> > Das funktioniert nicht. Sieht jemand den Fehler? Sieht jemand, wo x herkommen soll? MfG ChrisB -- Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/ </code></pre> replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 13:05:13 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623999#m1623999 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623999#m1623999 <p>Hallo,</p> <blockquote> <blockquote> <pre><code class="block language-javascript"></code></pre> </blockquote> </blockquote> <p>var a = ['0', '1', '2', '3'];</p> <blockquote> <blockquote> <p>for (var i = 0, l = a.length; i < l; i++)<br>   {<br>   textDiv.innerHTML.replace(/[0-9]{5}/g, function(){return x[i];});<br>   }</p> </blockquote> </blockquote> <pre><code class="block"> > > Das funktioniert nicht. Sieht jemand den Fehler? > Sieht jemand, wo x herkommen soll? Verdammt.. Kleiner Tippfehler hier. Habe ein wenig umgeschrieben - es will aber immer noch nicht klappen: ~~~javascript var a = ['0', '1', '2', '3']; var m = textDiv.innerHTML.match(/[0-9]{5}/g); for (var i = 0, l = m.length; i < l; i++)   textDiv.innerHTML.replace(m[i], function(){return a[i];}); </code></pre> <p>Ich bekomme die korrekte Anzahl der zu treffenden Einträgen mit m.length<br> Ich bekomme den korrekten momentanen Wert m[i] in der Funktion mit alert(m[i])<br> Ich bekomme den korrekten momentanen Wert von a[i] in der Funtion mit alert(a[i])<br> Aber: es wird nichts ersetzt. Irgendwas läuft da nicht rund - aber was?</p> <p>Grüße, John</p> replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 14:51:56 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624000#m1624000 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624000#m1624000 <p>Hi,</p> <blockquote> <p>Aber: es wird nichts ersetzt.</p> </blockquote> <p>Doch.</p> <p>Aber: Du machst nichts mit dem „Ersetzten“.</p> <p>String.replace ändert nicht das Original, sondern gibt das „Ersezte“ zurück.</p> <p>MfG ChrisB</p> <div class="signature">-- <br> Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/ </div> replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 15:16:08 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624001#m1624001 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624001#m1624001 <p>Hallo,</p> <blockquote> <p>Aber: Du machst nichts mit dem „Ersetzten“.<br> String.replace ändert nicht das Original, sondern gibt das „Ersezte“ zurück.</p> </blockquote> <p>Ai verdammt... Das habe ich also übersehen.<br> Tja.. jetzt muss ich mir was neues überlegen.<br> Aber vielen Dank für die Info. Habe mich gestern das erste Mal etwas intensiver mit regulären Ausdrücken beschäftigt. Dann wollte ich einen Text damit "zerlegen" und umformen. Da habe ich gleich an replace() gedacht.<br> Grüße, John</p> replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 16:39:42 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624002#m1624002 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624002#m1624002 <p>Hi,</p> <blockquote> <blockquote> <p>Aber: Du machst nichts mit dem „Ersetzten“.<br> String.replace ändert nicht das Original, sondern gibt das „Ersezte“ zurück.<br> Ai verdammt... Das habe ich also übersehen.<br> Tja.. jetzt muss ich mir was neues überlegen.</p> </blockquote> </blockquote> <p>Nein, musst du nicht. Du musst nur das Original entsprechend überschreiben – mit dem Rückgabewert, den du von replace bekommst.</p> <p>MfG ChrisB</p> <div class="signature">-- <br> Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/ </div> replace() - ein Suchkriterium, verschiedener Ersetzungswert Sun, 02 Nov 14 20:07:05 Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624003#m1624003 https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624003#m1624003 <p>Hallo,</p> <blockquote> <p>Du musst nur das Original entsprechend überschreiben – mit dem Rückgabewert, den du von replace bekommst.</p> </blockquote> <p>Joo, habe ein wenig über das Problem nachgedacht und bin genau zu dieser Lösung gekommen. Einfach bei jedem Schleifendurchgang die Speichervariable überschreiben.<br> Bin nun fertig mit meinem Script :-)<br> Nochmal ein dickes Dankeschön für deine Tipps.</p> <p>Grüße, John</p>