2012-10-17 93 views
1

我正在使用NSScanner檢測字符串中[方括號]所限定的文本,並將其轉換爲HTML超鏈接。我希望把下列方式轉換這樣的文字:在NSScanner的文本輸出中包含最後一個字符

This [is an] example of the [text] I'm using 

應該轉換爲

This <a href = "is an">is an</a> example of the <a href = "text">text</a> I'm using 

我已經實現了一個NSScanner,但爲了使其正常工作,我需要提取兩個第一個和第二個方括號。

這裏是我的代碼的當前狀態:

NSScanner *theScanner; 
NSString *text = nil; 
theScanner = [NSScanner scannerWithString:stringWithBrackets]; 

NSString *stringWithoutBrackets; 
while ([theScanner isAtEnd] == NO) { 
    [theScanner scanUpToString:@"[" intoString:NULL]; 
    [theScanner scanUpToString:@"]" intoString:&text]; 

<BREAK> 

在這個斷點,我有一個字符串返回,這確實不包含右括號。因此,對於上面的例子文本字符串的NSString *文本在第一個斷點內容是

[is an 

爲了正確操作字符串,我需要用兩個開閉架工作。

本質上,我的問題是:如何提前NSScanner 一個字符,並將該字符包含到變量'文本'中?

+1

我可以問你爲什麼「不被接受」我的回答再次?它有問題嗎? –

+0

也許,我只是現在測試:)當我知道它的工作原理時,會放回去。在測試之前,我不應該接受它! – CaptainProg

+0

好的,這很公平!它認爲你在接受之前已經測試過它。 - 請讓我知道是否有任何問題,然後我會盡力幫助。 –

回答

2

您可以scanString跳過]字符:如果沒有匹配]字符

if ([theScanner scanString:@"]" intoString:NULL]) { 
    text = [text stringByAppendingString:@"]"]; 
} else { 
    // Next character is not ']' 
} 

else情況只會發生。在這種情況下,text包含從[到字符串末尾的部分。

或者,您可以使用NSRegularExpression,例如該方法返回匹配正則表達式的字符串中所有範圍的數組。

相關問題