28.06.2017, 21:22
|
Новичок на форуме
|
|
Регистрация: 28.06.2017
Сообщений: 7
|
|
при такой выборке, почему пропадают последние теги
var str = '*text : текст *html_1: <p>текст*</p>: *title: заголовок текст *tag: text1 *tag2: text';
считывает *title: заголовок текст, а то что дальше не распознает
|
|
28.06.2017, 21:59
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Сообщение от sergeev26
|
считывает *title: заголовок текст, а то что дальше не распознает
|
в каком браузере и что пропало?
["text", " текст ", "html_1", " <p>текст*</p>: ", "title", " заголовок текст ", "tag", " text1 ", "tag2", " text"]
|
|
29.06.2017, 15:32
|
Новичок на форуме
|
|
Регистрация: 28.06.2017
Сообщений: 7
|
|
Сообщение от рони
|
в каком браузере и что пропало?
["text", " текст ", "html_1", " <p>текст*</p>: ", "title", " заголовок текст ", "tag", " text1 ", "tag2", " text"]
|
моя ошибка, все работает хорошо
а, можно как-то сразу преобразовать строку из JSON.stringify в объект или массив
чтоб получить: ключ - значение (тег - текст тега)
|
|
29.06.2017, 16:55
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Сообщение от sergeev26
|
а, можно
|
не осилил и вас ещё в третьем сообщении просили показать что хотите получить на выходе?!
Сообщение от sergeev26
|
в объект или массив
|
все вам показанные способы дают массивы, причём тут
Сообщение от sergeev26
|
JSON.stringify
|
???
|
|
29.06.2017, 18:07
|
Новичок на форуме
|
|
Регистрация: 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);
|
|
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()
|
|
29.06.2017, 21:17
|
|
Профессор
|
|
Регистрация: 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));
|
|
29.06.2017, 21:22
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Ruslan_xDD,
что-то не так с value
|
|
29.06.2017, 21:27
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
sergeev26,
Сообщение от рони
|
показать что хотите получить на выходе?!
|
|
|
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));
|
|
|
|