无法解释ansi颜色代码

时间:2011-05-29 23:24:26

标签: objective-c regex colors nsattributedstring ansi-escape

我周末在个人项目上工作并被困在这里。基本上,我需要转

[0; 37m [33m o0 ==============================〜o [0] o~ === =========================== 0O

进入

O0 ==============================〜问题o [0] O〜========= ===================== 0o(现在只有这个文字是黄色的)

使用cocoa的正则表达式功能,我能够找到并捕获“[0;”,“37m”和“[33m”]。 “0;”表示服务器希望删除任何以前的文本样式并返回默认值,即黑色背景和白色文本。 “37m”表示服务器希望文本为白色(不知道为什么会这样,但这是服务器发送的内容)。最后的“33m”表示服务器希望文本显示为黄色。我的代码正确地找到,剥离并识别字符串中请求的颜色变化,但是我在将这些颜色应用到我创建的NSAttributedString时遇到了问题。一旦我去掉最终字符串中的颜色序列,正则表达式搜索提供的范围就不再有效了,有什么方法可以找出颜色变化应该应用于剥离字符串的位置?在此示例中,所有颜色代码都在开头提供,但在其他情况下,颜色代码可能位于中间以使字符串在中线改变颜色。如果我能找出适当的范围来分配所请求的颜色,NSAttributedString可以处理这个问题。

1 个答案:

答案 0 :(得分:0)

现在Lion已经出局我可以发布答案。基本上你可以使用Lion中的花哨正则表达式能力来弄清楚是什么。执行此操作的代码(需要重构,但至少它可以工作)可以在这里找到:

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