Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > поиск позиций в связанных по привилу строках


Автор: Alex_B 30.4.2007, 11:06
Здравствуйте.

Есть две строки: строка А и строка Б. 
Из строки А получается строка Б, по определенному правилу.

строка А представляет собой маску ввода, где на позиции отмеченной как "0", на выходе (строка Б), может стоять только цифра.
символ "/" означает, что следующий за ним символ экранирован, и должен сам выводиться в строку Б.

пример 1: 000   -> ЦЦЦ
пример 2: /000  -> 0ЦЦ
пример 3: //000 -> /ЦЦЦ
,где Ц - цифра
красным выделен эранированный символ

При вводе нового символа, берется соответствующиее ему правило из строки А.
если вводимый символ не удовлетворяет условию он не вводится.
Если на месте вводимого символа в строке А стоит экранированный символ, то выводится этот экранированный символ.

Для примера 1 все просто:
каждому вводимому символу соответсвует символ в строке А (маске ввода) с тем же номером.

Для примера 2 все усложняется:
ввод первого символа  -> вывод экранированного символа- "0"
ввод второго символа  -> правило ввода уже не на 2-й позиции, а на 3-ей
ввод третьего символа -> привило ввода на 4-ой позиции.
Т.е. позиция правила ввода не соответсвует позиции вводимого символа.

Поэтому существует курсор указывающий на нужную позицию в маске (строке А).
Если в маске стоит экранированный символ, то курсор перемещается на 2 позиции вперет, если не экранированнй символ то курсор перемещается на 1 позицию вперет.


Вопрос:
Если пользователь захочет стереть уже введенный символ, как узнать на сколько позиций перемащать назад курсор в маске:
на одну
или на две?


Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)