2011-05-12 87 views
0

我做了一個語法突出顯示,我需要用標籤中的這個單詞替換所有出現的特殊單詞。例如我有:用NSMutableString替換單詞

@「int main {bla bla; float = 0; bla bla;」

,並希望得到

@」 < \ FONT COLOR = FF00FF> INT < \ FONT>主{血乳酸血乳酸; < \ FONT COLOR = FF00FF>浮< \ FONT> = 0; 「等等。

(不得不放在\ FONT之前)。 我有特殊字符數組,在html中有這個文本(與它一起浮動,我從UITextView contentAsHTMLString中獲得它),並且只想放置顏色標籤。如何?

試過stringByReplacingOccurrencesOfString但

PR < \ FONT COLOR = FF00FF> INT < \ FONT> f()的

不是我想要的。

嘗試regexkitlite。[editString replaceOccurrencesOfRegex:[NSString stringWithFormat:@「[^ a-zA-z]%@ [^ a-zA-z]」,specialString] withString:[NSString stringWithFormat:@「$ 0%@ $ 1」,specialString] range :NSMakeRange(0,[editString length])];如果我從「withString」中刪除$ 0和$ 1,它將不會替換「int」,而是「int」(無論是否接近int字)。

+0

如果你真的想爲任意代碼樣本語法高亮(你只覆蓋C btw?)簡單的替換和正則表達式都不會讓你在那裏 - 想想例如's =「int」;',轉義換行符,typedefs,...我要麼搜索現有的熒光筆,要麼使用現有的解析器(例如clang的API)。 – 2011-05-12 18:35:05

回答

0

首先顏色應用到了「INT」事件:

NSString *initialString = @"int main{ bla bla; float=0; bla bla;";  
NSString *stringWithColorInt = [initialString stringByReplacingOccurrencesOfString:@"int" withString:@"<FONT COLOR=FF00FF>int<\FONT>" options:NSLiteralSearch range:NSRange(0,[initialString length])]; 

再到「漂浮」事件:

NSString *stringWithColorFloat = [stringWithColorInt stringByReplacingOccurrencesOfString:@"float" withString:@"<FONT COLOR=FF00FF>float<\FONT>" options:NSLiteralSearch range:NSRange(0,[stringWithColorInt length])]; 
+0

我有一個巨大的代碼+ html標籤的字符串。 stringByRaplacing替換所有的「int」,包括內部的單詞,比如printf。 – aspcartman 2011-05-12 17:49:35

+0

我將編輯我的答案 – 2011-05-12 17:57:35

+0

NSLiteralSearch不起作用。我仍然在printf中突出顯示int :(我想說的是stringByReplacingOccurrencesOfString:@「int」withString:@「_ int_」使pr_int_f。 – aspcartman 2011-05-12 18:16:37