Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 28.06.2017, 21:22
Новичок на форуме
Отправить личное сообщение для sergeev26 Посмотреть профиль Найти все сообщения от sergeev26
 
Регистрация: 28.06.2017
Сообщений: 7

при такой выборке, почему пропадают последние теги

var str = '*text : текст *html_1: <p>текст*</p>: *title: заголовок текст *tag: text1 *tag2: text';

считывает *title: заголовок текст, а то что дальше не распознает
Ответить с цитированием
  #12 (permalink)  
Старый 28.06.2017, 21:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от sergeev26
считывает *title: заголовок текст, а то что дальше не распознает

в каком браузере и что пропало?
["text", " текст ", "html_1", " <p>текст*</p>: ", "title", " заголовок текст ", "tag", " text1 ", "tag2", " text"]
Ответить с цитированием
  #13 (permalink)  
Старый 29.06.2017, 15:32
Новичок на форуме
Отправить личное сообщение для sergeev26 Посмотреть профиль Найти все сообщения от sergeev26
 
Регистрация: 28.06.2017
Сообщений: 7

Сообщение от рони Посмотреть сообщение

в каком браузере и что пропало?
["text", " текст ", "html_1", " <p>текст*</p>: ", "title", " заголовок текст ", "tag", " text1 ", "tag2", " text"]
моя ошибка, все работает хорошо

а, можно как-то сразу преобразовать строку из JSON.stringify в объект или массив

чтоб получить: ключ - значение (тег - текст тега)
Ответить с цитированием
  #14 (permalink)  
Старый 29.06.2017, 16:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от sergeev26
а, можно
не осилил и вас ещё в третьем сообщении просили показать что хотите получить на выходе?!
Сообщение от sergeev26
в объект или массив
все вам показанные способы дают массивы, причём тут
Сообщение от sergeev26
JSON.stringify
???
Ответить с цитированием
  #15 (permalink)  
Старый 29.06.2017, 18:07
Новичок на форуме
Отправить личное сообщение для sergeev26 Посмотреть профиль Найти все сообщения от sergeev26
 
Регистрация: 28.06.2017
Сообщений: 7

Сообщение от рони Посмотреть сообщение
не осилил и вас ещё в третьем сообщении просили показать что хотите получить на выходе?!

все вам показанные способы дают массивы, причём тут ???

Необходимо на выходе получить массив где в роли ключа тег, а значение = текст тега

Можно конечно обойти циклом и записать первое значение в ключ, а второе в value, но выглядит не надежно

var str = '*text : текст *html_1: <p>текст*</p>: *title: заголовок текст * tag: text1  *tag2: text';

str = str.split(/\*\s?(\w+)\s?:/);
str && str.shift();

var arr = [];
for (var key in str) {
	if (key & 1) {
		var key2 = parseInt(key) - 1;
		arr[str[key2].trim()] = str[key].trim()
	}
}

console.log(arr);
Ответить с цитированием
  #16 (permalink)  
Старый 29.06.2017, 18:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

sergeev26,
var str = '*text : текст *html_1: <p>текст*</p>: *title: заголовок текст *tag: text1 *tag2: text';
 str = str.split(/\*\s?(\w+)\s?:/);
 str && str.shift();
 str = str.filter(function(a, i, d) {
   if(i % 2) return true;
   var obj = {};
       obj[a] = d[i+1].trim();
       d[i+1] = obj
   return  false
 })
 alert(JSON.stringify(str));

Последний раз редактировалось рони, 29.06.2017 в 18:46. Причина: добавлен trim()
Ответить с цитированием
  #17 (permalink)  
Старый 29.06.2017, 21:17
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var str = '*text : текст *html_1: <p>текст*</p>: *title: заголовок текст *tag: text1 *tag2: text';
var result = {};

str.replace(/\*(\w+)\s*:\s*.+?(?=$|(?:\s*\*\w+\s*:))/g, function(m, key, value) {
   result[key] = value;
});

alert(JSON.stringify(result));
Ответить с цитированием
  #18 (permalink)  
Старый 29.06.2017, 21:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Ruslan_xDD,
что-то не так с value
Ответить с цитированием
  #19 (permalink)  
Старый 29.06.2017, 21:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

sergeev26,
Сообщение от рони
показать что хотите получить на выходе?!
Ответить с цитированием
  #20 (permalink)  
Старый 29.06.2017, 21:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

sergeev26,

var str = '*text : текст *html_1: <p>текст*</p>: *title: заголовок текст *tag: text1 *tag2: text';
 str = str.split(/\*\s?(\w+)\s?:/);
 str && str.shift();
 str = str.reduce(function(a, b, i, d) {
   (++i % 2) && (a[b] = d[i].trim())
   return  a
 },{})
 alert(JSON.stringify(str));
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объект String. Проверка, является ли последним символом строки точка supat Общие вопросы Javascript 2 24.04.2016 10:54
Скрипт не работает на добавленные строки Гробовщик jQuery 2 20.02.2015 13:18
Считать строки в таблице игнорируя вложенные Гробовщик jQuery 4 17.12.2013 09:49
Разделение строки по последнему повторяющемуся символу ansi_str Общие вопросы Javascript 3 27.04.2012 23:27
Для события onCLick получить индекс строки и объект грида. progi2007 ExtJS 4 05.08.2009 11:31