За последние 24 часа нас посетили 22276 программистов и 998 роботов. Сейчас ищет 661 программист ...

Надо получить содержимое спец символов

Тема в разделе "JavaScript и AJAX", создана пользователем Денис404, 12 авг 2018.

Метки:
  1. Денис404

    Денис404 Новичок

    С нами с:
    16 июн 2018
    Сообщения:
    15
    Симпатии:
    0
    Есть строка "Привет мой дорогой друг, давно тебя не видел. {$@&^[|file|(text)|file|]^&@$} {$@&^[|file|(text1)|file|]^&@$}" Текст перед кодом не ограниченной длины(его надо откинуть, теги тоже не ограничены... надо получить такую комбинацию от каждого тега тип=текст(file=text)(file=text1)
    И да.... надо на JS
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Строка - это хорошо, но вы бы больше сделали акцент на той закономерности, которая отделяет нужные подстроки от остальных данных. Попробую ванговать (пример в песочнице):
    Код (Javascript):
    1. const output = str.match(/\[[^[]+\]/g).map(el => {
    2.   let [k, v, ..._] = el.replace(/^[[|]+|[|]]+$/g, '').split('|');
    3.   return {[k]: v};
    4. });
    5. console.log(output);
    Если ES6+ не используете, то в старом синтаксисе:
    Код (Javascript):
    1. var output = str.match(/\[[^[]+\]/g).map(function(el) {
    2.   var part = el.replace(/^[[|]+|[|]]+$/g, '').split('|'),
    3.     o = {};
    4.   o[part[0]] = part[1];
    5.   return o;
    6. });
     
  3. Денис404

    Денис404 Новичок

    С нами с:
    16 июн 2018
    Сообщения:
    15
    Симпатии:
    0
    Большое спасибо, сначала тупанул.... спасибо большое...
     
  4. Денис404

    Денис404 Новичок

    С нами с:
    16 июн 2018
    Сообщения:
    15
    Симпатии:
    0
    если не очень сложно, то как после этого можно заменить этот тег на html?)
    Код (Text):
    1. var str = document.getElementsByTagName("p")['0'].textContent;
    2. if(str.indexOf('{$@&^[') + 1) {
    3. var output = str.match(/\[[^[]+\]/g).map(function(el) {
    4.   var part = el.replace(/^[[|]+|[|]]+$/g, '').split('|'),o = {};
    5.     o[part[0]] = part[1];
    6.       var spos = part[1].substring(1, part[1].length-1);
    7.  
    8.   if(part[0] == "file"){
    9.   }else if(part[0] == "video"){
    10.   }else if(part[0] == "photo"){
    11.   }else if(part[0] == "music"){
    12.   }else if(part[0] == "vote"){}
    13.  
    14.  
    15.  
    16.  
    17.   return o;
    18. });
    19. }
     
  5. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Ничего не понял...
     
  6. Денис404

    Денис404 Новичок

    С нами с:
    16 июн 2018
    Сообщения:
    15
    Симпатии:
    0
    предполагается использовать эту конструкцию для замены в тексте {$@&^[|file|(text)|file|]^&@$} на некую html форму, это подобие bbкодов