2014-11-20 24 views
-2

也许我疯了,但我似乎无法理解为什么isEqualToString在这种情况下返回false。isEqualToString为相同的字符串返回false?

我写了下面的方法来解码从百分之编码URL字符串:

-(NSString*) decodeFromURLSafe: (NSString*) urlToDecode{ 
    NSString *safeUrl = [urlToDecode stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    safeUrl = [safeUrl stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
    return safeUrl; 
} 

在实践中它的工作原理,但我写了一些测试,它不明白他们为什么失败

以下是一个这样的试验:

-(void)testDecodingFromURLSafe{ 
    NSString *unescapedString = @"@a!b*c(d)e;f:g&h=i+j$k,l/m#n\\p[q]r<s>t^u{v}w|x~y"; 
    NSString *answer = [_viewController decodeFromURLSafe:@"%40a%21b%2Ac%28d%29e%3Bf%3Ag%26h%3Di%2Bj%24k%2Cl%2Fm%23n%5C%5Cp%5Bq%5Dr%3Cs%3Et%5Eu%7Bv%7Dw%7Cx%7Ey"]; 
    NSLog(@"%@", answer); 
    NSLog(@"%d", [answer isEqualToString:@"@a!b*c(d)e;f:g&h=i+j$k,l/m#n\\p[q]r<s>t^u{v}w|x~y"]); 
    XCTAssert([answer isEqualToString:unescapedString], @"decoding works"); 
} 

在第二的NSLog语句的字符串是直接从第一输出复制:

2014-11-20 14:03:46.352 ProjName[5573:60b] @a!b*c(d)e;f:g&h=i+j$k,l/m#n\\p[q]r<s>t^u{v}w|x~y 

但两者的比较,返回false,我很困惑,我失去了我。 我已经尝试将字符串放入DiffNow中,以检查它们是否相同,但仍然没有任何结果。

回答

6

你需要加倍您的反斜杠,使他们正确地逃脱

@a!b*c(d)e;f:g&h=i+j$k,l/m#n\\\\p[q]r<s>t^u{v}w|x~y

+0

这实际上就是为什么有两个。它应该只是一个 – user3534641 2014-11-20 21:52:45

+0

其实你的答案我刚才意识到我仍然把百分比编码一个双斜杠。谢谢!!! – user3534641 2014-11-20 21:54:46

相关问题