在NSString中检测撇号?

5

我正在使用Gamekit通过蓝牙在两个设备之间发送数据。我想要获取发送数据的设备名称,但是如果设备名称是“Bob's iPhone”,我想要去掉“'s iPhone”这部分。我首先检查是否以“iPhone”或“iPod Touch”结尾。

 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


我想你应该使用转义序列来表示字符 ',具体我不是很确定,但是尝试使用类似于 \ ' 的转义序列来捕获同样的字符。如果这解决了你的问题,请回复确认。 - y ramesh rao
我确实考虑了转义序列,但没有成功。(我尝试过 [name hasSuffix:@"'s"]) - Thegaber777
2个回答

1

这可能是编码字符串的情况。您应该确保字符串关于这些情况

's还是´s或者是‘s或其他一些字符。

您可能有其他导致问题的字符。

这些是我的猜测。希望这能帮助您找出问题所在。


我该如何检查不同类型的撇号? - Thegaber777

0
你需要在 NSString 中使用 rangeOfString: 方法。
if ([name rangeOfString:@"'"].location != NSNotFound)
{
    ...
}

我尝试使用rangeOfString,但它仍然跳过了撇号。我认为这是一个编码字符串的问题。 - Thegaber777

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接