月別アーカイブ: 2015年2月

NSStringからnull文字を削除

デバイス制御系の処理を書いているとデバイスのSDKから渡されたNSStringが変な動きをすることがあります。
stringWithFormatで処理しても途中で切れたり、NSMutableStringのappend系で追加しても切れたり。。
私が直面した現象の原因は単純で、null文字がNSStringに含まれていることなんですけど、なんつーかFucking!ですよね。

いくら舌打ちしたところでSDKを修正してもらえるわけではありませんので、対応を。

下記のコードでNSStringに含まれているnull文字を削除できます。

-(NSString*)trimNullString:(NSString*)val
{
  if (!val) return nil;

  NSInteger length = [val length];
  unichar buffer[length];
  [val getCharacters:buffer range:NSMakeRange(0, length)];

  int endpos = 0;
  for (int i=0; i<length; i++) {
    unichar c = buffer[i];
    if (c == 0x0){
      endpos = i;
      break;
    }
  }

  if (endpos > 0){
    NSString *result = [NSString stringWithCharacters:(const unichar *)buffer  length:(NSUInteger)endpos];
    return result;
  } else {
    return @"";
  }
}