2012-07-06 43 views
0

的創建的NSString我有以下文字的NSString:從某一點上其他的NSString

You can now download "file.png" from "http://www.example.com/RANDOM.png" 

如何創建與該字符串的URL新的NSString?我想:

http://www.example.com/RANDOM.png 

我通常只是刪除開始文本,但「file.png」可以是任何長度的任何文件名,並且不能與stringByReplacingOccurrencesOfString被刪除(因爲我不知道它是什麼)。任何想法如何刪除一切到from "結束?謝謝你的幫助。

回答

3
NSRange range = [string rangeOfString:@"from \""]; 
NSString *URL = [string substringFromIndex:range.location + range.length]; 

錯誤檢查可能是一個好主意(即range.location != NSNotFound)。你還必須從字符串中去掉最後一個",但是有一個substringToIndex:方法,結合字符串的長度,可以做到這一點(我把這留給你,它的微不足道)。

+0

通過返回的位置'rangeOfString'是字符串的開頭。所以你必須這樣做:'[string substringFromIndex:(range.location + range.length)]'; – 2012-07-06 15:57:19

+0

@DanF哎呀,你當然是對的!將編輯,感謝抓住這一點。 – JustSid 2012-07-06 15:58:19

+0

我相信如果文件名是「from meh.png」就會失敗。在這種情況下,正則表達式可能會更好。或者從第二個到最後一個'''開始到最後 – nms 2012-07-06 16:01:03

1

最好的方法是使用正則表達式來識別url。下面是使用從@gruber的URL匹配的正則表達式的例子,你可能需要調整有點根據服務器的實際輸出:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))" options:NSRegularExpressionAnchorsMatchLines | NSRegularExpressionAllowCommentsAndWhitespace error:NULL]; 
NSRange range = [regex rangeOfFirstMatchInString:myString options:0 range:NSMakeRange(0, [myString length])]; 
NSString *URL = [myString substringWithRange:range]; 
+0

+1因爲正規表達式在ObjC應用程序中使用不足,-1只提供答案的一半... – JustSid 2012-07-06 16:00:33

+0

完全同意。從我的iPhone和無法提供子字符串的代碼:)。採取點:) – graver 2012-07-06 16:31:48

+1

採取自由添加一個例子,並給你+1 – JustSid 2012-07-06 17:40:29