1

私はこれに対する一般的な解決策を探しましたが、人々の特定の質問に対する答えしか見つけられません。

基本的に、文字列内の任意の種類の文字の間の項目を置き換えるために.replace()を一般的に使用する方法を知りたいです。例:

abcとxyzの間にある、abcとxyzを含むすべてのテキストを置き換えます。例:abc text to be replaced xyz

または、その間のすべてのテキストを置き換えます<img and />。例:<img src="image.jpg" />

誰かが私を助けたり、これについての良い策略の方向に私を向けたりすることができますか?

ありがとう!さらに明確にする必要がある場合はお知らせください。

4

2 に答える 2

5

あなたが探しているものは正規表現と呼ばれています。詳細については、次のようなサイトにアクセスしてください。http: //www.regular-expressions.info/

正規表現はJavaScriptに固有のものではないことに注意してください。

あなたの特定の例のために:

string.replace(/abc.+xyz/,"abc"+newString+"xyz");

。は任意の文字を意味し、+は1つ以上の出現を意味します。

交換するものが複数ある場合は、次のことを試してください。

string.replace(/abc.+?xyz/g,"abc"+newString+"xyz");

gは一般を表し、?は遅延数量詞です。これは、文字列内で次にxyzが発生したときに停止することを意味します。

于 2012-06-13T23:54:46.157 に答える
3

    String.prototype.replaceBetween = function(opentag, closetag, replacement) {
      var read_index = 0;
      var open_index = 0;
      var close_index = 0;
      var output = '';

      while ((open_index = this.indexOf(opentag, read_index)) != -1) {
        output += this.slice(read_index, open_index) + opentag;
        read_index = open_index + opentag.length;

        if ((close_index = this.indexOf(closetag, read_index)) != -1) {
          if (typeof replacement === 'function') {
            output += replacement(this.substring(open_index + opentag.length, close_index - 1)) + closetag;
          } else {
            output += replacement + closetag;
          }
          read_index = close_index + closetag.length;
        }
      }

      output += this.slice(read_index);

      return output
    };

    var mydiv = document.getElementById("mydiv");
    var html = mydiv.innerHTML;
    html = html.replaceBetween("<b>", "</b>", "hello");
    html = html.replaceBetween("<b>", "</b>", function(body) {
      return body + ' world';
    });
    mydiv.innerHTML = html;
<div id="mydiv">The begining...<b>for</b> and <b>bar</b>... the end.</div>

于 2012-06-14T00:16:21.950 に答える