2013-06-19 8 views
-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» должен быть изменен на: Лисица коричневый лиса коричневый Лисица 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» должен быть изменен на: Лисица коричневый FOX is BrOwn THE FOX IS BROWN

Я подумал, что, возможно, сначала я должен попытаться найти «первое» появление строки «text1» внутри «text2», но похоже, что это не работает? И я подумал, что после этого могу использовать substring? Или, может быть, есть еще более простой способ сделать это? Я не уверен. Любая помощь могла бы быть полезна. Спасибо.

+0

В соответствии с downvotes это кажется глупым вопросом. Сожалею. – isuckatcoding

+0

Это не глупо, это просто не приносит больших усилий с вашей стороны. вы упомянули несколько идей, которые у вас были - почему бы не попробовать некоторых из них, а затем вернуться, когда у вас есть более конкретный вопрос? – sgroves

+0

Вы не можете изменять строки в Javascript. Такие функции, как 'toLowerCase()' возвращают новую строку. – Barmar

ответ

1

Это похоже на то, что вы просто пытаетесь заменить первую часть строки текстом1.

Вы можете попробовать это.

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

О, это имеет смысл. Легче и мне это нравится. Спасибо. Кстати, мне пришлось изменить его на 'text1.length'. :) – isuckatcoding

+0

Плюс мне пришлось удалить '-1'. :) Теперь он отлично работает! – isuckatcoding

+0

Исправлено для других –

1

То, что вы ищете, чтобы заменить первое вхождение подстроки text1 в text2 с text1, игнорируя регистр.

Для этого можно построить regular expression, используя флаг «i» gnore-case.

Предполагая, что вы не знаете содержание 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.

+0

Ничего себе, это тоже хорошо! Большое спасибо. Я поддержал ваш ответ! Спасибо за усилия и объяснения! – isuckatcoding

+1

Это решение является более общим и будет работать везде, где появляется «text1», причем не только в начале строки. –

Смежные вопросы