Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите решить задачу (https://javascript.ru/forum/misc/74414-pomogite-reshit-zadachu.html)

nekit44 09.07.2018 14:08

Помогите решить задачу
 
Добрый день

Помогите плиз решить задачу на js

Суть задачи:
Есть 2 строки, в первой строке есть символ - *
Нужно найти его вхождение и удалить во второй строке все найденные вхождения, и из первой тоже удалить все *
чтобы получилось

var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";

на выходе:
Type=Cyber_TIME=_5_K=1.7
Type=Cyber_TIME=_5_K=1.7


что "накодил" сам

var str = "Type=Cyber_TIME=*_5_K=1.7*";
    var str2 = "Type=Cyber_TIME=3_5_K=1.70";
    var target = "*"; // цель поиска
    var all = [];
    var pos = 0;
    while (true) {
        var foundPos = str.indexOf(target, pos);
        if (foundPos == -1) break;
        all.push(foundPos);
        pos = foundPos + 1;
    }


    all.forEach(function (item, i, all) {
        alert(item);
        str[item] = '';
        str2[item] = '';
    });
    console.log(str);


Помогите плиз

laimas 09.07.2018 14:20

str = str.replace(/\*/g,'')

nekit44 09.07.2018 14:29

не, нужно номера букв в строке 2 удалить там где стоит * в строке 1

рони 09.07.2018 14:30

nekit44,
var str = "Type=Cyber_TIME=*_5_K=1.7*";
    var str2 = "Type=Cyber_TIME=3_5_K=1.70";
    var target = "*"; // цель поиска
    var all = [];
    var pos = 0;
    while (true) {
        var foundPos = str.indexOf(target, pos);
        if (foundPos == -1) break;
        all.push(foundPos - all.length);
        pos = foundPos + 1;
    }


    all.forEach(function (item, i) {
        str = str.slice(0,item) + str.slice(item+1)
        str2 = str2.slice(0,item) + str2.slice(item+1)
    });
    console.log(str, str2);

nekit44 09.07.2018 14:44

Цитата:

Сообщение от рони (Сообщение 489351)
код

Спасибо огромное!
Я был почти у цели)

рони 09.07.2018 14:57

nekit44,
если нужно, можно добавить длину target
var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";
var target = "*";
var len = target.length;
var all = [];
var pos = 0;
while (true) {
    var foundPos = str.indexOf(target, pos);
    if (foundPos == -1) break;
    all.push(foundPos - all.length * len);
    pos = foundPos + len
}
all.forEach(function(item) {
    str = str.slice(0, item) + str.slice(item + len);
    str2 = str2.slice(0, item) + str2.slice(item + len)
});
console.log(str, str2);

Dilettante_Pro 09.07.2018 15:32

Ходы кривые роет...

var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";
for (var i = str.length - 1;i > -1; i--) {
   str[i] = str[i]==str2[i]?str[i]:"";
}
str2 = str;
console.log(str, str2);

...всегда идут в обход
var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";
for (var i = str.length - 1;i > -1; i--) {
   str[i] = str[i]==str2[i]|str[i];
}
str2 = str;
console.log(str, str2);

nekit44 09.07.2018 15:47

Dilettante_Pro, идея прикольная но не работает

рони 09.07.2018 15:51

Dilettante_Pro,
какой из вариантов работает и где?

рони 09.07.2018 15:54

:write:
var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";
str2 = str = [...str].filter(a => a != "*").join("");
console.log(str, str2);


Часовой пояс GMT +3, время: 03:22.