【问题标题】:method for Comparing two NSString for spelling mistakes iPhone programmingiPhone编程比较两个NSString拼写错误的方法
【发布时间】:2014-04-20 22:08:27
【问题描述】:

我正在为一个类似于 Hangman 的游戏编写 iOS 应用程序,只是要求玩家从第一个字母开始,一次猜一个字母。游戏开始时,密语在UITextField 中显示为星号 (*)。

当玩家猜出第一个字母时,程序应将其与密语进行比较,看字母是否正确。如果猜测正确,应用程序应将第一个星号替换为正确的字母。如果猜测不正确,将采取其他行动。玩家一次一个字母地重复这个过程,直到完全拼出这个秘密单词。

这是我目前用来检查猜出的字母和密码的代码,但它不能正常工作。

-(void) checkGameLetter : (NSString *) letterToCheck{
    bool match = NO;
    NSRange gameLetterRange;
    char charToCheck = [letterToCheck characterAtIndex:0];
        for(int i = 0; i < self.correctWord.length; i++)
        {
            char tempString = [self.correctWord characterAtIndex:i];
            if(charToCheck == tempString){
                match = YES;
                gameLetterRange = NSMakeRange(i, 1);//location, length
                Screen.text =[Screen.text stringByReplacingCharactersInRange:gameLetterRange withString:letterToCheck];

        }

}

【问题讨论】:

  • 我无法理解您的问题……这是针对 Hangman 应用程序的吗? “未知”字母是否带有星号 (*)?
  • @aapierce 是的,由*显示的未知字母适用于像 Hangman 这样的应用程序,但我希望玩家按顺序输入字母!例如,如果我有一个单词(书),玩家应该先输入“b”,然后游戏将检查它是否正确,然后玩家应该输入第二个字母“o”,然后输入第三个字母“o”,依此类推。
  • 所以你要问的是如何从输入的单词中提取最后一个字符?
  • @vikingosegundo 我想在游戏中按正确的顺序(索引)检查输入的字母。 char 在索引 0 然后 char 在索引 1 然后 char 在索引 2 等等
  • @user3554683 我完全重写了你的问题,试图让它更清楚。如果我有错误,请随时纠正。

标签: objective-c ios7 nsstring nsrange


【解决方案1】:

您的代码的问题在于它没有说明我们正在检查的正确单词的哪个字母。

例如,假设单词是“zork”并且用户猜测“r”。您正在尝试通过“zork”查看“r”是否与 any 字母匹配。但是根据您的规范,如果这是对 first 字母的猜测,我们应该只检查 first 字母(“z”)并停止,因为“ r" 在那个位置是错误的。

因此,您要编写的内容比您拥有的代码要简单得多。你不想要这个:

-(void) checkGameLetter : (NSString *) letterToCheck{

你想要这个:

-(void) checkGameLetter:(NSString*)letterToCheck againstPosition:(NSInteger)position {

并且不会出现循环:您只需直接查看该位置的字母,看看它们是否相同。

最后注意这个重要的事实:== 不比较两个字符串。它询问它们是否是同一个object,它们显然不是。你想要isEqualToString:

【讨论】:

  • 感谢您的帮助,但我尝试按照您所说的解决代码,但我有很多错误!我是 Objective-c 的新手,并尽力而为,但我没有正确的代码!你能再给我解释一下吗?以及为什么我不需要使用循环!每个正确答案如何改变位置?
  • 你或任何人能解释一下吗,拜托。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多