25.06.2013, 21:55
|
Новичок на форуме
|
|
Регистрация: 25.06.2013
Сообщений: 4
|
|
Строка в массив по регулярному выражению
Дорогие профи, помогите разобраться, никак не получается.
Дано строка:
":11: Привет, как дела? :02::05: Всё хорошо, пока! :21:Удачи... :14:"
Нужно разделить строку на массив, чтобы получилось так:
arr[0]=":11:";
arr[1]="Привет, как дела?";
arr[2]=":02:";
arr[3]=":05:";
arr[4]="Всё хорошо, пока!";
...
arr[n]=":14:";
Чтобы потом каждый элемент массива уже обработать по своему. Заменить ":число:" на нужные смайлы с картинкой. В голову приходит только этот варинат:
str=":11: Привет, как дела? :02::05: Всё хорошо, пока! :21:Удачи... :14:";
reg=/(:{1}\d{2}:{1})/gi;
list=str.split(reg);
Получаю массив, того что нужно, но это не работет в IE. Какие ещё есть другие варинанты (кроссбраузерные), для решения данной задачи?
|
|
25.06.2013, 22:08
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
чем match не устроил
var str = ":11: Привет, как дела? :02::05: Всё хорошо, пока! :21:Удачи... :14:";
var reg = /(:\d+:)/g;
var list = str.match(reg);
alert(list);
|
|
25.06.2013, 22:39
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
var str=":11: Привет, как дела? :02::05: Всё хорошо, пока! :21:Удачи... :14:"
var arr = str.replace(/^:|:$/gim,'').split(/:+/);
alert(arr.join(',\n'))
|
|
25.06.2013, 23:04
|
Новичок на форуме
|
|
Регистрация: 25.06.2013
Сообщений: 4
|
|
Deff, спасибо! Именно то что нужно. Столько времени мучался, никак не выходило, надо было раньше спросить
В варианте у bes, выводились только цифры, мне нужно было с текстом... У меня тоже так получалось, текст пропадал...
|
|
25.06.2013, 23:08
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от Pegas12345
|
В варианте у bes, выводились только цифры, мне нужно было с текстом... У меня тоже так получалось, текст пропадал...
|
ты ж написал
Сообщение от Pegas12345
|
Чтобы потом каждый элемент массива уже обработать по своему. Заменить ":число:" на нужные смайлы с картинкой.
|
зачем тебе лишний текст, да и сам массив собственно
|
|
26.06.2013, 11:54
|
Новичок на форуме
|
|
Регистрация: 25.06.2013
Сообщений: 4
|
|
Цитата:
|
зачем тебе лишний текст, да и сам массив собственно
|
я получаю данные по ajax запросу в xml формате, и чтобы после вставить в окно чата сообщение, ДОМ, нужно создать элементы, текст или картинка. Вот и обхожу массив, и если картинка создаю объект картинка, если текст, то текст, а после встраиваится уже готовое сообщение в конец div-а.
|
|
26.06.2013, 20:16
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от Pegas12345
|
я получаю данные по ajax запросу в xml формате, и чтобы после вставить в окно чата сообщение, ДОМ, нужно создать элементы, текст или картинка. Вот и обхожу массив, и если картинка создаю объект картинка, если текст, то текст, а после встраиваится уже готовое сообщение в конец div-а.
|
приведи пример получаемого xml, так как ты привёл только строку, в которой хml и не пахнет
не обязательно делать нечто вроде
<script>
window.onload = function () {
var img;
document.body.appendChild(img = new Image(100, 100));
img.src = "http://javascript.ru/forum/images/ca_serenity/misc/logo.gif";
document.body.appendChild(img = new Image(100));
img.src = "http://javascript.ru/forum/image.php?u=19820&dateline=1334914235";
}
</script>
чтобы собрать, по сути, текстовое сообщение
|
|
27.06.2013, 16:56
|
Новичок на форуме
|
|
Регистрация: 25.06.2013
Сообщений: 4
|
|
Да нет, строка точно xml, просто я уже тут в примере только просто текстом написал, а так полученные данные приходя в виде:
Код:
|
<mesg num='' color='' from='' to=''>текст сообщения</mesg> |
вот "текст сообщения" и обрабатываю. Уже сделал, всё работатет Только IE замучал со своими заморочками...
|
|
27.06.2013, 21:16
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от Pegas12345
|
Да нет, строка точно xml,
|
ой не факт
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<mesg num='' color='' from='' to=''>текст сообщения</mesg>
<mesg num='' color='' from='' to=''>текст сообщения</mesg>
<button class="but">click</button>
<script>
jQuery(function ($) {
$(".but").on("click", function () {
alert($("mesg").text());
});
});
</script>
Последний раз редактировалось bes, 27.06.2013 в 21:29.
|
|
|
|