Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> string.replase() не работает 
V
    Опции темы
neoks
Дата 10.5.2011, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Не могу понять как это сделать.
Вот стринг
Код

.codepress{
    width: 100%;
    border: 0;
    background: transparent;
}


Вот функция
Код

data.replace(/(.*?){(.*?)}/g,'<font style="color:#1a790d">$1</font><font style="color:#ff0000">{$2</font>$3<font style="color:#ff0000">}</font>');


Не может найти, работает если только все в одной строке, как быть ?
Перепробовал все что нашёл не помогает!!!
PM MAIL   Вверх
ksnk
Дата 10.5.2011, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



можно вместо точки использовать вот такое
Код

html = html.replace( /<meta\s(\n|\r|.)*?>/gi,'');

Да и флагов можно побольше поставить.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
neoks
Дата 10.5.2011, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Да если б так все просто, не получается !!!  smile 

Суть в том что я делаю подсветку кода, беру из текстового поля код и пытаюсь разукрасить.
Но не получается, только в одной строке и все, хоть тресни.
PM MAIL   Вверх
memba
Дата 10.5.2011, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.5.2011

Репутация: нет
Всего: нет



Я не уверен на 100% .. но...

у вас стоит модификатор g ... это просто глобальная замета, тоесть если replace нашёл и заменил первый попавшиеся совпадение, то он на этом не остановиться. Это хорошо!

Но у вас data как я понимаю многострочная строка. И для корректной работы требуется ещё модификатор \m

\m (multiline). Многострочный поиск.

Попробуйте, должно работать
PM MAIL   Вверх
neoks
Дата 10.5.2011, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



memba 

Не помогает !
PM MAIL   Вверх
neoks
Дата 11.5.2011, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Короче решил не мучится и сделал так.  smile 
Код

        data = data.replace(/([{,},#,.,%])/g,'<font style="color:#ff0000">$1</font>');
        data = data.replace(/(.*?)\{/g,'<font style="color:#1a790d">$1{</font>');
        
        data = data.replace(/([\w-]*?):(.*?);/g, '<font style="color:#ff5500">$1</font><font style="color:#ff0000">:</font><font style="color:#007fff">$2</font><font style="color:#ff0000">;</font>'); // keys


Всем спасибо за внимание!
PM MAIL   Вверх
Котокобра
Дата 11.5.2011, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 26.11.2009

Репутация: нет
Всего: 4



правильный ответ: [\s\S]* 

(все пробельные и все не пробельные символы)
PM MAIL   Вверх
neoks
Дата 11.5.2011, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Хм, это вам не php, не катет работает только с 1 переносом или пробелом, если вставить * то пиши пропала, браузер висит  smile 
Ну вообще всем спасибо, я по одной строке все преобразовал, пока фурычит  smile 
PM MAIL   Вверх
Котокобра
Дата 12.5.2011, 04:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 26.11.2009

Репутация: нет
Всего: 4



да все фурычит!

Код

<body>

<pre>
.codepress{
    width: 100%;
    border: 0;
    background: transparent;
}
</pre>

<script>
var el = document.getElementsByTagName('pre')[0];
var data2 = el.innerHTML;
var data='.codepress{    width: 100%;    border: 0;    background: transparent;}';

el.innerHTML = data2.replace(/([\s\S]*.*){([\s\S]*.*)}/g, '<font style="color:#1a790d">$1</font><font style="color:#ff0000">{$2</font>$3<font style="color:#ff0000">}</font>');
</script>


</body>


PM MAIL   Вверх
neoks
Дата 12.5.2011, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Попробуй прописать так 
Код

var datas='.codepress{   \n width: 100%;\n border: 0;  \n background: transparent; \n}\n.codepress{   \n width: 100%;\n border: 0;  \n background: transparent; \n}\n';


И ты увидишь о чём я говорю, it is impossible  smile 
PM MAIL   Вверх
Котокобра
Дата 12.5.2011, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 26.11.2009

Репутация: нет
Всего: 4



ну так блин... поиск надо чем-то останавливать
Код


<body>

<pre></pre>

<script>

var el = document.getElementsByTagName('pre')[0];
var datas='.codepress{   \n width: 100%;\n border: 0;  \n background: transparent; \n}\n.codepress{   \n width: 100%;\n border: 0;  \n background: transparent; \n}\n';

el.innerHTML = datas.replace(/([^{]+){([^}]+)}/gi, '<font color="green">$1</font>{<font color="red">$2</font>}');


</script>




</body>


Это сообщение отредактировал(а) Котокобра - 12.5.2011, 11:51
PM MAIL   Вверх
neoks
Дата 12.5.2011, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Котокобра
Все работает Спасибо!
Просто нужно знать что писать, я в этом еще не разбераюсь  smile 
PM MAIL   Вверх
Котокобра
Дата 12.5.2011, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 26.11.2009

Репутация: нет
Всего: 4



я это сделал!

Код

<body>

<pre></pre>

<script>

var el = document.getElementsByTagName('pre')[0];
var datas='.codepress{   \n width: 100px;\n border: 0;  \n background: transparent; \n}\n.codepress{   \n width: 100%;\n border: 0;  \n background: transparent; \n}\n';

el.innerHTML =

datas.replace(/([^\{]+\{)([^\}]+)\}/gi,
    function(x, y, z){
        return y + '<font color="black">'+

            z.replace(/([^;]+)(:)([^;]+)/gi,
                function(x, y, z, w){
                    return '<font color="green">'+ y +'</font>' + z +
                        w.replace(/([\d%]+)|(\D+)/gi, '<font color="red">$1</font><font color="blue">$2</font>');
                })

            +'</font>}';
    });


</script>




</body>

PM MAIL   Вверх
neoks
Дата 12.5.2011, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Котокобра
Хо хо, крута даже цифры другого цвета.  smile 

У меня к тебе еше один вопрос, пытаюсь сделать так чтоб если нажал энтер после знака { все выравнивалась как у проги phpDesigner 7.
Есть идея и почти работает, но снова с регулярными выражениями плохо.

Вот код для примера:

Код

sc = sc.replace(/{[^.?}]+}/g,'');
d  = sc.split('{').length;
is_modal('dd',sc);
 
b = '';
n = '';
                
for(i=0;i<d;i++){
    b = b + '    ';
}
                
for(i=0;i<d-1;i++){
    n = n + '    ';
}
                
api.insertTab("",b+"\n"+n);


Пытаюсь сделать чтоб выглядело так
Код

if{
        if{
            if{
                if{
                    
                }
            }
        }
        else{
            
        }
    }


Не могу подобрать тут:
Код

sc = sc.replace(/{[^.?}]+}/g,'');


То есть удаляет первый совпавшийся { и последний }, не знаю как сделать чтоб удалял сначала внутри символов {...} а потом что осталось.
PM MAIL   Вверх
Котокобра
Дата 12.5.2011, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 26.11.2009

Репутация: нет
Всего: 4



я раньше недооценивал регэкспы...

Код

<body>


<div id="d"></div>

<script>
var d = document.getElementById('d');

var str = 'a { \n b { \n c{ \n d -e -f -g \n} \n} \n}';
var tab = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';

function braket(str1, tab1){
    return str1.replace(/(\s*{\s*\n)([\s\S]*)(})/,
        function(x, y, z, w){
            return y + tab1+tab + braket(z, tab1+tab) + tab1 + w;
        }
    );
}

str = braket(str, '');

d.innerHTML = str.replace(/\n/gi, '<br />');

</script>

</body>


PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0611 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.