2013-02-20 54 views
1

這是我的例子字符串,從遠程服務器解析:提取文本解析的NSString

NSString *example = @"#parsed Value1:1a 2013-02-20 10:00:00 UTC Value2=2a Value3=3a Value4=4aKm Value5=A" 

我需要從上面的字符串推斷單個值,分離,無其他字符:

"1a" 
"2013-02-20 10:00:00 UTC" 
"2a" 
"3a" 
"4a" 
"A" 

請建議我這樣做的正確的代碼(我試過沒有成功與正則表達式),謝謝!

+0

示例字符串格式保持不變或它會改變? – DeveshM 2013-02-20 14:11:40

+0

它保持不變... – Huxley 2013-02-20 14:12:41

+0

我認爲你在使用':'而不是'='的例子中有一些錯誤,或者沒有爲第二個參數寫'ValueX =',請在...之前糾正它們... – apascual 2013-02-20 14:14:09

回答

2

如果格式保持不變,則不需要使用正則表達式。

嘗試使用NSScanner,特別是方法scanUpToString:intoString:scanString:intoString:

編輯:

此代碼應該是你所需要的:

NSString *example = @"#parsed Value1:1a 2013-02-20 10:00:00 UTC Value2=2a Value3=3a Value4=4aKm Value5=A"; 

NSString *temp, *value1, *date, *value2, *value3, *value4, *value5; 
NSScanner *scanner = [NSScanner scannerWithString:example]; 
// By default, NSScanner will skip whitespace - we don't want it to skip anything here 
[scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@""]]; 
[scanner scanString:@"#parsed Value1:" intoString:&temp]; 
[scanner scanUpToString:@" " intoString:&value1]; 
[scanner scanString:@" " intoString:&temp]; 
[scanner scanUpToString:@" Value2=" intoString:&date]; 
[scanner scanString:@" Value2=" intoString:&temp]; 
[scanner scanUpToString:@" Value3=" intoString:&value2]; 
[scanner scanString:@" Value3=" intoString:&temp]; 
[scanner scanUpToString:@" Value4=" intoString:&value3]; 
[scanner scanString:@" Value4=" intoString:&temp]; 
[scanner scanUpToString:@" Value5=" intoString:&value4]; 
[scanner scanString:@" Value5=" intoString:&temp]; 
value5 = [example substringFromIndex:[scanner scanLocation]]; 
+0

謝謝,@ c.cam108,這是正確的代碼! – Huxley 2013-02-20 14:45:05

+0

不客氣。順便說一句,它不是「正確的代碼」,這只是我對問題的解決方案。總有不止一種方法來給貓上皮! – colincameron 2013-02-20 14:50:52

+0

Eheh,我的問題的正確代碼之一,當然:) – Huxley 2013-02-20 14:53:02

1

那些確切的鍵名正則表達式是這樣的:的()?

#parsed Value1:(.*) (.*) Value2=(.*) Value3=(.*) Value4=(.*) Value5=(.*) 

如果該列表的長度是可變,可以組如果您需要任意鍵,你需要組和重複的東西可以檢測到key=value模式。

+0

我會改變你的正則表達式和使用非貪婪的量詞,以防萬一....替換'(。*)用'(。*?)' – 2013-02-20 14:16:50

+0

謝謝,@Peter,請你能提供一些代碼來做到這一點嗎?我非常初學者! – Huxley 2013-02-20 14:18:38