NSString isEqualToString 明明相等,比較失敗的原因。




NSString *messageType = [messageTypesArray objectAtIndex:1]; if([messageType isEqualToString:@"06"]) //回復位置 { NSString *additionalMessage =[messageTypesArray objectAtIndex:5]; additionalMessage = [additionalMessage stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; NSLog(@"additionalMessage is:%@",additionalMessage); if([additionalMessage isEqualToString:@"Fail"]) { NSLog(@"TRUE"); } }

  今天寫程序遇到一個問題,NSLog輸出的明明是Fail,拿去勇isEqualToString比較卻始終不執行 輸出TURE的語句,很邪門。試了很久:

   去除空格和換行符,  還有一些其他的方法都不成功。在google上看到有人說,輸出2者的字符串長度看看,我着加了

NSLog(@"additionalMessage length: %d",additionalMessage.length);//控制台輸出900多

NSLog(@"Fail length:%d",@"Fail".length);//控制台輸出4

  

  竟然第一個的長度會是900多,我想應該會是這個additionMessage獲取的是服務器上的,而服務器是在客戶端上傳的一個字符串的末尾加了Fail;但服務器是用的Win平台的,客戶端IOS;可能因為這個原因,服務器傳過來的數據加上了一些 不容易發覺的空格,如“制表符”之類。

  后來我在去除首尾空格的后面加了

             

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

  

如下語句解決問題。我也不清楚controlCharacterSet是什么字符集。但是問題解決了,希望給后來人幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM