-1

これが私がやろうとしていることです。正直なところ、どこから始めればよいかさえわかりません。

var text1 = 'ThE foX iS brown',

        text2 = 'the fox is brown the fox is brown THE FOX IS BROWN',

        index = text2.toLowerCase().indexOf(text1.toLowerCase()),

        output = 'do something with substring?';

    alert(index);

「text2」は次のように変更する必要があります。 The Fox is brown the fox is brown THE FOX IS BROWN

    var text1 = 'ThE foX iS brown the FOX is BrO',

        text2 = 'the fox is brown the fox is brown THE FOX IS BROWN',

        index = text2.toLowerCase().indexOf(text1.toLowerCase()),

        output = 'do something with substring?';

    alert(index);

この場合、"text2" は次のように変更する必要があります。

最初に「text2」内の文字列「text1」の「最初の」出現を見つけようとする必要があると思いましたが、うまくいかないようですか? substringその後、私は?を使用できると思いました。それとも、これを行うためのさらに簡単な方法がありますか? わからない。どんな助けでも本当にありがたいです。ありがとうございました。

4

2 に答える 2

1

探しているのは、大文字と小文字を無視して、最初に出現する部分文字列text1をに置き換えることです。text2text1

「i」大文字と小文字を区別しないフラグを使用して、そのための正規表現を作成できます。

の内容がわからない場合はtext1、正規表現によって解釈されるいくつかの特殊文字をエスケープする必要があります。正規表現を取得したら、replaceを使用できます。

次に例を示します。

// Function to escape Regular Expressions special characters.
// From: http://stackoverflow.com/questions/3115150/how-to-escape-regular-expression-special-characters-using-javascript
RegExp.escape = function(text) {
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
};

var text1 = 'ThE foX iS brown';
var text2 = 'the fox is brown the fox is brown THE FOX IS BROWN';

// Create the Regular Expression with the "i"gnore-case flag
var re = new RegExp(RegExp.escape(text1), "i");

var output = text2.replace(re, text1);
// output -> ThE foX iS brown the fox is brown THE FOX IS BROWN

そして、ここに実用的なフィドルがあります。

于 2013-06-19T21:11:50.853 に答える