tag:forum.selfhtml.org,2005:/self replace() - ein Suchkriterium, verschiedener Ersetzungswert – SELFHTML-Forum 2014-11-02T20:07:05Z https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623993#m1623993 John 2014-11-02T00:33:28Z 2014-11-02T00:33:28Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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> https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623996#m1623996 ChrisB 2014-11-02T02:37:39Z 2014-11-02T02:37:39Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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> https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623994#m1623994 hotti http://rolfrost.de 2014-11-02T07:33:57Z 2014-11-02T07:33:57Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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> https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623995#m1623995 John 2014-11-02T09:40:58Z 2014-11-02T09:40:58Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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> https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623997#m1623997 John 2014-11-02T09:34:39Z 2014-11-02T09:34:39Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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> https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623998#m1623998 ChrisB 2014-11-02T12:44:22Z 2014-11-02T12:44:22Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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> https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623999#m1623999 John 2014-11-02T13:05:13Z 2014-11-02T13:05:13Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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> https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624000#m1624000 ChrisB 2014-11-02T14:51:56Z 2014-11-02T14:51:56Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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> https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624001#m1624001 John 2014-11-02T15:16:08Z 2014-11-02T15:16:08Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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> https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624002#m1624002 ChrisB 2014-11-02T16:39:42Z 2014-11-02T16:39:42Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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> https://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1624003#m1624003 John 2014-11-02T20:07:05Z 2014-11-02T20:07:05Z replace() - ein Suchkriterium, verschiedener Ersetzungswert <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>