由于字符串长度不匹配,我只是追踪了字符串相等错误。额外的字符是'\ r',它根本没有显示在Xcode 4的输出窗口中。如果有的话,我就不必花费的时间和追踪问题的时间差不多。
是否可以在输出窗口中显示空白字符?如果是这样,我必须背诵什么神奇的咒语来启用它?
我在编辑器菜单下尝试了Show Invisibles,但这只适用于代码编辑器,而不适用于输出窗口。我在iOS应用程序上使用Xcode 4。
答案 0 :(得分:1)
我现在只想到一个解决方案:创建一个类别:
<强>的NSString + myAdditions.h 强>
@interface NSString (myAdditions)
- (NSString *)showInvisibles;
@end
<强>的NSString + myAdditions.m 强>
#import "NSString+myAdditions.h"
@implementation NSString (myAdditions)
- (NSString *)showInvisibles
{
NSString *regexToReplaceWhitespaces = @"([\\s])";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexToReplaceWhitespaces
options:NSRegularExpressionCaseInsensitive
error:&error];
NSString *result = [regex stringByReplacingMatchesInString:self
options:0
range:NSMakeRange(0, [self length])
withTemplate:@"␣"];
return result;
}
@end
<强>用法强>
NSLog(@"show me the unseen: %@", [@"soo many whitespace in here \t\t <- look two tabs!" showInvisibles]);
<强>输出强>
soo␣␣␣␣␣␣many␣␣␣␣whitespace␣in␣here␣␣␣␣␣<-␣look␣two␣tabs!
答案 1 :(得分:0)
你可以百分之百逃避你的字符串。你可以在第三个参数(我包括所有常见的参数)中指定不转义的字符,其余的将被转义:
NSLog(@"%@", CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)yourString, (CFStringRef)@" <>#%{}|\^~[]`;/?:@=&$", NULL, kCFStringEncodingUTF8);