NSString isEqualToString:for \n

Sco*_*nce 9 cocoa objective-c string-comparison nsstring

我有一个调用Web服务的Cocoa应用程序.当我解析来自Web服务的响应时,我得到一个\n作为XML的每个元素的NSXMLParser的foundCharacters委托中的最后一个字符.

当我尝试执行以下操作时:

if (![string isEqualToString:@"\n"])
Run Code Online (Sandbox Code Playgroud)

检查将始终无法捕获换行符.有人知道串联检查换行的好方法吗?

我还发现奇怪的是每个元素在每个值的末尾都有一个换行符,即使我在Web服务的输出中没有看到任何证据.

对于应该非常容易做到的事情来说,这是一个非常棘手的问题.

phu*_*ehe 20

我想这就是你需要的东西?
text = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];


Pet*_*sey 12

当我解析来自Web服务的响应时,我得到一个\n作为最后一个字符...

当我尝试执行以下操作时:

if (![string isEqualToString:@"\n"])
Run Code Online (Sandbox Code Playgroud)

检查将始终无法捕获换行符.

该消息将只返回YES,如果string是一个字符的长度和字符\n.

如果要测试字符串是否以字符结尾 \n,则需要使用hasSuffix::

if (![string hasSuffix:@"\n"])
Run Code Online (Sandbox Code Playgroud)

如果你想从字符串的末尾剥离 \n并使用剩下的东西,那么phunehehe的解决方案是正确的.

编辑:在Jeremy W. Sherman的回答中,他指出网络服务可能会给你CRLF终止的文本.这是一个有效的点,您不仅要查看\n该行的末尾,还要检查完整的\r\n序列.他提供的代码是一种方法.无论如何,您仍然需要删除整行分隔符,即使它是一个\r\n序列.