Задать вопрос

JavaScript: работа со строками. Как объединить строки?

Допустим есть 2 строки. Мне нужно объединить их таким образом чтобы конец первой, заменял начало второй, если они совпадают. Например:
var str1 = 'я первое, а я',
result = '',
str2 = 'а я второе';

result = method(str1, str2)
//желанный результат:
result -> 'я первое, а я второе'
  • Вопрос задан
  • 3581 просмотр
Подписаться 7 Оценить Комментировать
Решения вопроса 2
@marklangovoi
var str1 = 'как я ', str2 = 'яма';

var concat_with_replace = function(str1, str2) {
	var str1_words = str1.split(' '),
		str2_words = str2.split(' '),
		count = 0, last_word = -1, new_word = -1;
	for(var i = 0; i < str2_words.length; i++) {
		for(var j = str1_words.length-1; j >= 0; j--) {
			if(str1_words[j] === str2_words[i] || str1_words[j] == "" || str2_words[i] === "") {
				new_word = j;
				break;
			}
		}
		if(new_word !== last_word + 1 && last_word !== -1 || new_word === -1) {
			break;
		} else {
			new_word = -1;
			last_word = new_word;
			count++;
		}
	}
	var result = str1_words.splice(0 , str1_words.length-count).concat(str2_words);
	for(var i = 0 ; i < result.length; i++) {
		if(result[i] == "") {
			result.splice(i, 1);
			i--;
		}
	}
	return result.join(' ');
}

console.log(concat_with_replace(str1, str2));
Ответ написан
crazyzubr
@crazyzubr
Python backend-developer
Функция возвращает склеенный результат, только в том случае, если склейка произведена, в остальных случаях выдает undefined. В вопросе не указан данный случай.
function merge_string(str1, str2){
    var str3 = str2.slice(0, str1.length), str4;
    for (var i=str3.length; i>0; i--){
        str4 = str1.slice(-i);
        if (str4.indexOf(str2.slice(0, str4.length)) == 0){
            return str1.slice(0, -i) + str2
        }
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Если первая строка "Количество велосипедов"
а вторая "в гараже"
То посимвольное сравнение даст ошибку. "Количество велосипедов гараже".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы