該Web服務可能終止所有包含CRLF
的行,即"\r\n"
。您處於UNIX系統中,因此換行字符'\n'
被視爲行分隔符;回車'\r'
保留爲上一行的一部分。打印時,其效果與'\n'
相同。您是否驗證過(使用strvis
)行尾字符是'\n'
而不是'\r'
?
-[NSString hasSuffix:]
只會捕獲您提供的特定換行符。爲了測試是否在字符串中換行或空白結束,這裏是一個公認的分類方法:
- (BOOL)my_hasWhitespaceOrNewlineSuffix {
NSRange r = [self rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]
options:NSBackwardsSearch];
BOOL foundChar = r.location != NSNotFound;
BOOL isLineFinal = foundChar && (r.location + r.length == [self length]);
return isLineFinal;
}
您可以使用text = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]
phunehehe的建議,以消除任何行最後的空白或換行。
我假設上面的代碼是爲了「isEqualToString:」而不是「isStringEqualTo:」? – 2009-10-03 15:46:49
是的,謝謝你,我改變了它的問題。 – 2009-10-03 17:24:58