tag:forum.selfhtml.org,2005:/selfreplace() - ein Suchkriterium, verschiedener Ersetzungswert – SELFHTML-Forum2014-11-02T20:07:05Zhttps://forum.selfhtml.org/self/2014/nov/2/replace-ein-suchkriterium-verschiedener-ersetzungswert/1623993#m1623993John2014-11-02T00:33:28Z2014-11-02T00:33:28Zreplace() - 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#m1623996ChrisB2014-11-02T02:37:39Z2014-11-02T02:37:39Zreplace() - 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#m1623994hottihttp://rolfrost.de2014-11-02T07:33:57Z2014-11-02T07:33:57Zreplace() - 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#m1623995John2014-11-02T09:40:58Z2014-11-02T09:40:58Zreplace() - 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#m1623997John2014-11-02T09:34:39Z2014-11-02T09:34:39Zreplace() - 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#m1623998ChrisB2014-11-02T12:44:22Z2014-11-02T12:44:22Zreplace() - 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#m1623999John2014-11-02T13:05:13Z2014-11-02T13:05:13Zreplace() - 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#m1624000ChrisB2014-11-02T14:51:56Z2014-11-02T14:51:56Zreplace() - 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#m1624001John2014-11-02T15:16:08Z2014-11-02T15:16:08Zreplace() - 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#m1624002ChrisB2014-11-02T16:39:42Z2014-11-02T16:39:42Zreplace() - 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#m1624003John2014-11-02T20:07:05Z2014-11-02T20:07:05Zreplace() - 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>