如何从NSString中删除hex字符

我面临一个问题相关的string中的一些hex值,我需要从NSString中删除hex字符。

问题是当我打印对象打印为“空白行”。 在debugging模式下,它显示如下: 在这里输入图像说明

那么我怎样才能从string中删除呢?

编辑

修剪空白: 在这里输入图像说明

NSLog的结果是:

2015-12-14 15:37:10.710 MyApp [2731:82236] tmp:''

数据库:

在这里输入图像说明

较早的问题: 如何检测ios中的垃圾string值?

由于你的数据集显然有垃圾值,你可以使用这个方法来检查你的string是否有效。 定义你的validation标准,根本不招待垃圾的价值。 但正如gnasher以前所build议的那样,您应该更好地查找导致数据库中垃圾数据插入的错误。 一旦你完成了,检查inputstring是否符合你定义的标准。 如果是这样,就做你想做的。 如果没有,只要继续。

-(BOOL) isValidString: (NSString*) input { NSMutableCharacterSet *validSpecialChars = [NSMutableCharacterSet characterSetWithCharactersInString:@"_~.,"];//Add your desired characters here [validSpecialChars formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]]; return [[input stringByTrimmingCharactersInSet:validSpecialChars] isEqualToString:@""]; } 

如果你的string只包含你定义的字符,它将返回true。 如果它包含任何其他字符(垃圾或无效),它将返回false。

首先,不要相信Xcodedebugging器。 打印characterAtIndex:0以确保你真的拥有你的想法。

其次,删除东西都很好,但是你正在用一个症状来解决问题。 你应该真的试图找出_lastUpdatedBy的内容来自哪里,为什么它是什么。 你可能在这里有一个严重的错误,并试图掩盖它。 例如,可能存在一个存储垃圾数据而不是正确数据的错误,并且只是为了弥补这个错误。

我不确定你正在寻找什么,但如果你想删除所有的控制字符

 string = [[string componentsSeparatedByCharactersInSet:[NSCharacterSet controlCharacterSet]] componentsJoinedByString:@""] 

如果你需要更快,并确保控制字符只在string的开始和结束

 string = [string stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]]; 

注:删除所有控制字符将删除所有新行( \n )!


来自NSCharacterSet类参考 :

这些字符具体是Unicode值U + 0000到U + 001F和U + 007F到U + 009F。

您遇到问题的价值是\x06 ,即U+0006


如果你想删除\x06 ,那么你总是可以为它创build一个字符集。

 NSCharacterSet *hex6 = [NSCharacterSet characterSetWithCharactersInString:@"\x06"]; string = [[string componentsSeparatedByCharactersInSet:hex6] componentsJoinedByString:@""]