如何用另一个字符串替换部分字符串?

时间:2013-06-19 20:44:29

标签: javascript indexof

这就是我想要做的。老实说,我甚至不确定从哪里开始。

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”应该改为:你的棕色狐狸是褐色的狐狸是棕色的

    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”应该更改为:那就是棕色FOX是BrOwn FOX IS BROWN

我想也许我应该首先尝试在“text2”中找到字符串“text1”的“第一次”出现,但它似乎不起作用?之后我想我可以使用substring?或者甚至有更简单的方法来做到这一点?我不确定。任何帮助将非常感激。谢谢。

2 个答案:

答案 0 :(得分:1)

您似乎只是尝试用文本1替换字符串的第一部分。

你可以试试这个。

int text1Size = text1.length;
output = text1 + text2.substring(text1Size);

答案 1 :(得分:1)

您要找的是用text1替换text2中第一次出现的子串text1,忽略大小写。

您可以使用“i”gnore-case标记为其构建regular expression

假设您不知道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

here is a working fiddle