Просьба о помощи

Статус
Закрыто для дальнейших ответов.

MBoris

Топикстартер
12 лет на форуме
Сообщения
66
Реакции
0
Господа, Доброго времени суток!
Два вопроса (вернее просьбы) от чайника! Только прошу ногами не пинать и в RTFM не посылать (уж лучше просто не отвечать)!
Делаю свой первый javascript поиска и замены (есть некие сложности в применении уже написанных вами, в книгах на иврите).

1. Нужно найти например, дефис, расположенный между двумя цифрами и заменить его на специальный дефис, имеющий направление справа-налево, в то же время, дефис, расположенный между буквой и цифрой или между двумя буквами, необходимо заменять на специальный дефис ("Макаф").
2. Зачастую, текст на иврите перемежается с текстом на английском. правила замены в английском отличаются от правил для иврита, например, дефис между цифрами (от-до) должен заменятся на EmDash.
Собственно просьба: нельзя ли получить кусочки кода, иллюстрирующие:
а) замену чего-то, расположенного между чем-то и чем-то;
б) определяющего, относится ли найденное к соответствующему языку и посему разрешающего, либо не разрешающего замену.
Заранее благодарю и прошу прощения: о Javascriptе имею очень поверхностное представление.:)
 

Glutton

12 лет на форуме
Сообщения
885
Реакции
1
Ответ: Просьба о помощи

Регулярные выражения – это своего рода шаблоны поиска определенных комбинаций символов в строках, при этом регулярные выражения заключаются в слэши. Ниже перечислены литералы регулярных выражений.

Литералы Литерал Описание
\ Входит в состав специальных символов, а так же дает понять интерпретатору, что следующий символ – не литерал. Используется перед восьмеричными кодами символов для извлечения из памяти сохраненных подвыражений и для использования в регулярном выражении литерала.
^ Начало строки
$ Конец строки
* Означает, что предшествующий символ должен встретиться в строке много раз или не встретиться
+ Означает, что предшествующий символ должен встретиться в строке один или несколько раз
? Означает, что предшествующий символ должен встретиться в строке один раз или не встретиться
{число} Означает, что предшествующий символ должен встретиться в строке указаное число раз
{число, } Означает, что предшествующий символ должен встретиться в строке указаное число раз и более
{число1, число2} Означает, что предшествующий символ должен встретиться в строке от первого до второго числа раз
. Означает любой символ кроме \n (новая строка)
(подвыражение) Ищет подвыражение и сохраняет в памяти найденую группу символов
\номер группы Извлекает указанную группу символов, сохраненную с помощью предыдущего литерала
символ1|символ 2 Ищет один из двух символов
[набор символов] Ищет символ из заданого набора
[^набор символов] Ищет любой символ, не вошедший в набор
\b Означает границу слова, позицию между словом и пробелом
\B Означает границу пробела, позицию между пробелом и словом
\c Совпадает с управляющем символом вида "Ctrl"+"символ"
\d Любая цифра
\D Любой нецифровой символ
\f Символ перевода страницы
\n Символ новой строки
\r Символ возврата каретки
\s Пробел, табуляция, новая строка или перевод строки
\t Табуляция
\v Вертикальная табуляция
\w Буква, цифра или подчеркивание
\xКод Символ с указанным шеснадцатеричным кодом
\oКод Символ с указанным восмеричным кодом
\номер группы Извлекает из памяти, сохраненную ранее группу символов с заданным номером

Пример
/(\w+)@({\w\._}+)/

Данное выражение ищет любой адрес электронной почты, разбивая его на две части:имя почтового ящика и имя сервера, и сохраняет их в памяти в виде групп символов под номерами 1 и 2.



Класс RegExp
Этот класс отвечает за обработку строк с помощью регелярных выражений. Его конструктор имеет следующий вид:

RegExp(Регулярное выражение, Флаги)

Он принимает только один обязательный пареметр – это "Регулярное выражение", которое заключается в кавычки. Параметр "флаги" представляет собой дополнительные условия поиска и может принимать значения:

g – задается глобальный поиск, если етот флаг установлен, то выражение возвратит все подходящие слова.
i - игнорирование регистра символов
m – многострочный поиск


Для работы с регулярными варажениями используются три метода класса String:

match - выполняет поиск в строке, используя регулярное выражение, переданное в качестве параметра и возвращает массив с результатами поиска. Если ничего не найдено, возвращается null.
replase - выполняет поиск и замену в строке, используя регулярные выражения, и возвращает полученную строку.
search - выполняет поик в строке, используя регулярное выражение, переданное в качестве параметра, и возвращает позицию первой подстроки, совпадающей с регулярным выражением.
Свойства Свойство Описание
lastIndex Задает позицию начала поиска в строке
sourse Возвращает строку регулярного выражения (только чтение)
global Определяет наличие флага g и возвращает соответсявенно true или false
ignoreCase Определяет наличие флага i и возвращает соответсявенно true или false
multilane Определяет наличие флага m и возвращает соответсявенно true или false
Методы Метод Описание
compile (Регулярное выпажение g,i,m) Компелирует регулярное выражение во внутренний формат для ускорения работы, может использоваться для изменения регулярного выражения
exec(строка) Аналогичен методу match класса String, но строка, где нужно произвести поиск, передается в качестве параметра
test(строка) Аналогичен методу search класса String, возвращает true или false в зависимости о результатов поиска

Пример
var result, re, str;
str="http://www.netscape.com";
re=new RegExp ("w{3}","i");
result=str.match(re)

Здесь этот участок скрипта производит поиск текста "www" в строке, которая была присвоена переменной "str" без учета регистра, а метод match возвращает массив result, содержащий результаты поиска.



Глобальный объект RegExp
Этот глобальный объект служит для боступа к результатам поиска с использованием регулярных выражений. Этот объект создается самим интерпритатором и доступен всегда. Формат доступа к его свойствам:

RegExp.свойство

Свойства Свойство Описание
$номер подвыражения Возвращает одно из последних найденых подвыражений (зависит от номера). Номер может быть 1-9, т.к.интерпретатор хранит в этом свойстве только девять последних найденых подвыражений, для доступа к остальным используется массив, возвращенный методами match или exec
index Возвращает позоцию в строке найденой подстроки
input|&_ Возвращает строку, где производится поиск
lastIndex Задает позицию начала поиска в строке
lastMatch|$& Возвращает последнюю найденую подстроку
lastParent|$+ Возвращает последнюю найденую группу символов, если в регулярном выражении использовались подвыражения
leftContext|$' Возвращает строку, составленую из всех символов от начала строки до последней найденой подстроки, не включая ее
rightContext|$' Возвращает строку, составленую из всех символов от последней найденой подстроки, не включая ее, до конца исходной строки

Примеры использования Регулярных выражений
var re, str, protocol, address, filename, result;
str="http//www.somedomain.ru/index2.html";
re=new RegExp("((\w+): \/\/)?([^/]+) (.*)?","i");
result=re.exec(str);
if (result !=null){
protocol=RegExp.$2;
address=RegExp.$3;
filename=RegExp.$4;
}

Данный скрипт разбивает интернет адресс на несколько составных частей. В регелярном выражении использовалось несколько подвыражений, которые сохраняются интерпритатором следующим образом: сначала сохраняется внешнее выражение, а затем внутренее. После регулярного выражения следует строка (result=re.exec(str);), которая начинает разбивание адреса, а далее проверяется правильность адреса и, в случае положительного результата, происходит присваивание переменным соответствующих частей адреса.

http://www.mike-03.narod.ru/internet/JavaScript/indexJs.html
 

MBoris

Топикстартер
12 лет на форуме
Сообщения
66
Реакции
0
Ответ: Просьба о помощи

Уважаемый Glutton!
Большое спасибо за развёрнутый и, как я думаю, исчерпывающий ответ. Не всё мне понятно, но это проблема не отвечающего, а спрашивающего. У нас начинаются праздники (Новый Год), так что будет время сесть и разобраться. Спасибо и за ответ и за ссылку!
 

Glutton

12 лет на форуме
Сообщения
885
Реакции
1
Ответ: Просьба о помощи

Если что то стало понятным - это хорошо... Самое время задавать вопросы ;)
 

rio_vt

Участник
Сообщения
1
Реакции
0
Ответ: Просьба о помощи

Подскажите, пожалуйста, где найти описание объектной модели для InDesign cs3.
У меня есть для cs2, а версия инды - cs3: не все работает. Заниматься хакерством некогда - издаю еженедельную газету. С adobe скачал все - там старые описания.
 

sakhar

Professional
15 лет на форуме
Сообщения
1 550
Реакции
134

Hikage

10 лет на форуме
Сообщения
101
Реакции
0
Ответ: Просьба о помощи

boriskasmoscow, ой спасибо.. я его так искал.. именно под CS3
 

fimster

Участник
Сообщения
3
Реакции
0
Ответ: Просьба о помощи

Господа! Напрягли меня систематизацией фотоархива. В поставленной задаче - В InDesign CS2 на странице фрейм куда помещается фотография, ниже текстовый фрейм куда (по их измышлению) должна вставляться подпись состоящая из имени файла (размещенной выше фотографии). Подскажите пути решения, возможно оно сакраментально просто, либо существует "готовый велосипед" в варианте скрипта. Хелпните, плиз!!!
 

DanLong

Участник
Сообщения
142
Реакции
11
Ответ: Просьба о помощи

Может это подойдет
 

Вложения

  • ImageCatalog.zip
    3.3 КБ · Просм.: 358
Статус
Закрыто для дальнейших ответов.