Возникли проблемы при взаимодействии ANSI цветовых кодов - PullRequest
1 голос
/ 30 мая 2011

Я провел выходные, работая над личным проектом, и застрял здесь.В основном мне нужно повернуть

[0; 37 м [33 м o0 ============================= ~o [0] o ~ ==================================== 0o

в

о0 ============================== ~ о [0] о ~ ============================== 0o (теперь только этот текст будет желтым)

Используя функцию регулярного выражения какао, я смог найти и захватить "[0; "," 37m "и" [33m "индивидуально."0;"указывает на желание сервера удалить любой предыдущий стиль текста и вернуть его к значению по умолчанию - черному фону и белому тексту.«37m» указывает, что сервер хотел бы, чтобы текст был окрашен в белый цвет (не уверен, почему это здесь, но это то, что сервер отправляет).Последний «33m» указывает, что сервер хочет, чтобы текст был окрашен в желтый цвет.Мой код правильно находит, удаляет и идентифицирует требуемые изменения цвета в строке, но у меня возникают проблемы с применением этих цветов к создаваемой мной NSAttributedString.Диапазоны, предоставляемые поиском регулярных выражений, больше не действительны после того, как я вычеркну последовательности цветов в последней строке, каков эффективный способ выяснить, где изменения цвета должны применяться к вырезанной строке?В этом примере все цветовые коды предоставляются в начале, но в других случаях цветовые коды могут быть в середине, чтобы строка изменяла цвет средней линии.NSAttributedString может справиться с этим, если бы я мог определить правильные диапазоны для назначения запрошенных цветов.

1 Ответ

0 голосов
/ 12 августа 2011

Теперь, когда Лев отсутствует, я могу опубликовать ответ.В основном вы можете использовать необычные способности регулярных выражений в Lion, чтобы выяснить, что происходит.Код для этого (который должен быть реорганизован, но, по крайней мере, работает) можно найти здесь:

https://github.com/sgoodwin/Turbo-Mud/blob/experiment/Turbo%20Mud/Turbo_MudAppDelegate.m

...