2014-03-31 65 views
0

我在下面有一個.CSV文件,它已經被放入一個很好的格式,而不是一個可靠的值列表。讀入.CSV個別值

enter image description here

我如何將能夠從該列表讀取各個值......例如「5 & 6" 時代,並返回我知道怎麼會從正常檢索該是多少?

。所列出csv文件,但是不能從一個有一個奇怪的佈局像這樣的。任何想法?

感謝

+0

沒有做過CSV解析,但可能這幫助您https://github.com/davedelong/CHCSVParser –

+1

但從人類可讀,或機器的點尼斯可讀?顯示實際的CSV /解析內容日誌。你有多遠?它做錯了什麼? – Wain

+0

它以這種格式爲人類可讀,但它的需求也是機器可讀的,以生成報告。到目前爲止,我只有想法。這包括可能從數組索引中獲取值。但是,如果有更多次數,佈局結構可能會改變長度。所以我不確定最好的方法。 – Ryan

回答

0

如果列標題(如「時代4」和「5時間6「)是一致的,您可以分隔每行,然後用逗號分隔,查找列標題的索引,然後抓取下一行中的同一列。 我沒有測試過這個,但我認爲它應該可以工作。假設你的文件被讀入作爲一個字符串:

NSArray *componentsByLine = [myFile componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 

int firstIndex = 0; 
int secondIndex = 0; 
BOOL found = NO; 

for(firstIndex = 0; firstIndex < componentsByLine.count; firstIndex++) 
{ 
    NSArray *componentsByComma = [[componentsByLine objectAtIndex:firstIndex] componentsSeparatedByString:@","]; 

    for(secondIndex = 0; secondIndex < componentsByComma.count; secondIndex++) 
    { 
     if([[componentsByComma objectAtIndex:secondIndex] isEqualToString:@"Time of 5 & 6"]) 
     { 
      found = YES; 
      break; 
     } 

    } 
    if(found) 
     break; 
} 

float requestedTime = [[[[componentsByLine objectAtIndex:firstIndex+1] componentsSeparatedByString:@","] objectAtIndex:secondIndex] floatValue];