Показать сообщение отдельно
  #2 (permalink)  
Старый 19.08.2018, 23:25
Интересующийся
Отправить личное сообщение для Arhitector Посмотреть профиль Найти все сообщения от Arhitector
 
Регистрация: 12.08.2018
Сообщений: 18

function createActionForText (text) {
  var text_left_border_start = text.indexOf("[color="),
      text_left_border_end = text.indexOf("]", text_left_border_start),
      color = text.slice(text_left_border_start + 7, text_left_border_end),
      text_right_border_start = text.indexOf("[/color"),
      text_right_border_end = text.indexOf("]", text_right_border_start),
      value = text.slice(text_left_border_end + 1, text_right_border_start),
      text_array = text.split("");

  text_array.splice(text_right_border_start, 8);
  text_array.splice(text_left_border_start, color.length + 8);

  return {
    text: text_array.join(""),
    start: text_left_border_end - (color.length + 8),
    end: (text_left_border_end - (color.length + 8)) + value.length,
    color: color
  }
}
console.log(createActionForText(text));

У меня вроде получилось примерно то что надо, но как то уж больно громоздко выглядит, может можно как то поизящнее это сделать?
Ответить с цитированием