2013-01-23 62 views
0

我有一個NSStrings的NSMutableArray,其中陣列的每個元素的格式都等於@「key is 1 :: value is 1」。現在,我想將數組1中的「::」前面的字符串部分和數組2中的「::」後面的字符串部分存儲起來。我怎樣才能做到這一點?如何區分NSString的部分?

+0

你可以發佈一些代碼我的朋友,請元素,我會繼續增加在陣列1和陣列2的beforeString和afterString分別??? – NiravPatel

回答

0

拆分字符串的關鍵是使用NSString上的componentsSeparatedByString:方法將字符串分隔成NSArray。閱讀關於這種方法如何處理空白字符串的文檔,但這是你會使用的。

你說你有一個字符串數組,所以基本實現將涉及迭代該數組並將每個元素添加到另外兩個數組。

NSMutableArray *arrayOfStrings = [NSMutableArray array]; 
NSMutableArray *array1 = [NSMutableArray array]; 
NSMutableArray *array2 = [NSMutableArray array]; 

for (NSString *string in arrayOfStrings) 
{ 
    NSArray *components = [string componentsSeparatedByString:@"::"]; 
    if ([components count] == 2) 
    { 
     NSString *obj1 = [components objectAtIndex:0]; 
     NSString *obj2 = [components objectAtIndex:1]; 
     [array1 addObject:obj1]; 
     [array2 addObject:obj2]; 
    } 
} 
+0

這只是答案的一點。在尋找。他/她還希望你告訴如何將項目分成單獨的數組......當我們談論主題時,如果在一個鍵之後沒有任何值(例如空字符串或NULL)會發生什麼?嗯? –

+0

如果字符串已經在NSArray中並且代碼已更新以演示for循環,則字符串不會爲零或NULL。感謝你的關心。 – Jessedc

0

這裏是代碼:

NSArray *temp = [YourString componentsSeparatedByString:@"::"]; 
NSString *str1 = [temp objectAtIndex:0]; 
NSString *str2 = [temp objectAtIndex:1]; 

但訪問Array中的對象..檢查它是否包含之前的值。

0

使用本:

[array1 addObject:[[YourString componentsSeparatedByString:@"::"] objectAtIndex:0]]; 
[array2 addObject:[[YourString componentsSeparatedByString:@"::"] objectAtIndex:1]]; 
0

試試這個::

NSString *s = @"key is 1::value is 1"; 

NSArray *a = [s componentsSeparatedByString:@"::"]; 

NSLog(@" -> %@ --> %@", [a objectAtIndex:0], [a objectAtIndex:1]); 
0

我找到了辦法。而迭代原數組的

for(int i=0;i<self.originalArray.count;i++) 
    { 
     NSString *temp=[self.originalArray objectAtIndex:i]; 

     NSRange r = [temp rangeOfString:@"::"]; 
     NSString *beforeString = [temp substringToIndex:r.location]; 
     NSString *afterString = [temp substringFromIndex:r.location+2]; 

     [array1 addObject:beforeString]; 
     [array2 addObject:afterString]; 
    }