2010-08-20 53 views
4

我使用Gamekit通過兩個設備之間的藍牙發送數據。我想獲取發送它的設備的名稱,但如果名稱是「Bob's iPhone」,我想切斷「iPhone」。我首先檢查以「iPhone」或「iPod Touch」結尾。檢測NSString中的撇號?

if ([name hasSuffix:@" iPhone"]) 
{ 
    name = [name substringToIndex:[name length]-7]; 
} 
else if ([name hasSuffix:@" iPod Touch"]) 
{ 
    name = [name substringToIndex:[name length]-11]; 
} 

但是當我對「's」執行相同操作時,它永遠不會返回true。此外,撇號與默認撇號略有不同。

if ([name hasSuffix:@"'s"]) 
{ 
    name = [name substringToIndex:[name length]-2]; 
} 

是否有一些技巧來檢測撇號?有什麼辦法可以做到這一點?

編輯: 左邊的撇號是什麼名稱包含,但沒有註冊hasSuffix:@「s」。右邊的撇號是我添加的撇號。

alt text

+0

我想你應該使用'我不完全確定的轉義序列,但嘗試使用轉義序列像'捕獲相同的請確認我回來如果這解決了你的問題。 – 2010-08-20 06:18:11

+0

我確實考慮了逃生順序,但沒有運氣。 (我試過[name hasSuffix:@「\'s」]) – Thegaber777 2010-08-20 06:23:48

回答

0

你想在NSStringrangeOfString:方法。

if ([name rangeOfString:@"'"].location != NSNotFound) 
{ 
    ... 
} 
+0

我嘗試使用rangeOfString,但它仍跳過撇號。我認爲這是一個編碼字符串問題。 – Thegaber777 2010-08-20 18:50:33

1

這可能是編碼字符串的情況。你應該確保關於這種情況下的字符串

它是's或它是´s或是‘s或其他字符。

你可能有一些其他的字符導致你的問題。

這些是我的猜測。希望這可以幫助你找出你的問題。

+0

如何檢查不同類型的撇號? – Thegaber777 2010-08-20 18:50:50