2011-08-07 19 views
0

我想在iOS中使用從網絡流獲取的字符串進行字符串比較。iOS:如何從緩衝區或字符串中刪除空字符?

,讀取流的代碼是:

uint8_t buffer[1024]; 
int len; 
    while ([inputStream hasBytesAvailable]) 
    { 
     len = [inputStream read:buffer maxLength:sizeof(buffer)]; 
     if (len > 0) 
     { 
      NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding]; 
      [self handleServerResponse: intCommand Response:output]; 
     }else{ 
      [self endComms]; 
     } 
    } 

在另一端的服務器總是產生(0)被放置在數據的末尾以填充緩衝器的1024個字節的應對措施,CHR。

當我做一個字符串比較:

if ([email protected]"B") { 
    //do something... 
} 

我總是得到了否定的結果,大概是因爲串contaings響應和大量的空字符。

我希望能夠在將響應讀入字符串時從緩衝區中去掉空字符,但我在iOS中沒有任何運氣。

幫助感謝!

謝謝。

Dave

回答

0

您對於代碼不工作的原因做出了錯誤的假設。

變化:

if (strCut == @"B") 

到:

if ([strCut isEqualToString:@"B"]) 

以供將來參考從未做出假設 - 使用調試器或其他工具來驗證的問題是什麼。您可能還想考慮閱讀關於Objective-C的介紹性書籍。

+0

謝謝 - 目標C正在推進...困難! – user867358

0

問題是iOS的水平較低,他們可能是你用的,所以==實際上是比較地址而不是字符串。你想要的是這個。

if ([strCut compare:@"B"] == NSOrderedSame) { 
    ... 
} 

希望這會有所幫助。

相關問題