Задать вопрос
ItsEvilTime
@ItsEvilTime
Сайленсер не дает мне покоя

Как можно сократить мой код?

Задача кода - брать строку и заменять в ней последний параметр

Строка: matrix(1,0,0,1,0,0)
Собственно, нужно изменить последний 0 на 80
Все цифры в строке могут меняться, т.е. простым индексом выполнить задачу нельзя, но количество параметров постоянно (т.е. 6).

Я сделал следующим образом:
str = "matrix(1,0,0,1,0,0)";
obj = str.split("(")[1];
obj = obj.split(")")[0];
obj = obj.split(",");
obj[5] = "80";

objs = [];
objs.push(obj[0], obj[1], obj[2], obj[3], obj[4], obj[5]);
newStr = "matrix(" + objs.join() + ")";


Конечно, работает, но уверен, что все можно сделать гораздо проще. Подскажите как.
jsFiddle для удобства: https://jsfiddle.net/727g0Lm1/
  • Вопрос задан
  • 267 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 5
можно регуляркой менять:
str = "matrix(1,0,0,1,0,0)";
newStr = str.replace(/-?\d+\)/, '80)');
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
"matrix(1,0,0,1,0,0)".replace(/,\d+\)$/, ',80)');

либо если хотите менять любой индекс:

"matrix(1,0,0,1,0,0)".replace(/\(([\d\,]+?)\)$/, function (m, params) {
    params = params.split(',');
    params[5] = 80; // можно менять любой индекс

    return '(' + params.join(',') +  ')';
});
Ответ написан
Ivanq
@Ivanq
Знаю php, js, html, css
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Комментировать
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
var
      str = "matrix(1,0,0,1,0,0)",
      r = str.split(",")
;
 
r.splice(r.length - 1, 1, "80)");
//Или-или, как больше нравится
r[r.length - 1] ="80)";

alert(r.join(","));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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