【问题标题】:Objective-C (iOS) replace all occurrences of Wildcard in a string with the alphabetObjective-C(iOS)用字母替换字符串中所有出现的通配符
【发布时间】:2011-07-08 04:53:36
【问题描述】:

首先,这不是作业! :)

假设我有一个 NSString:"the?or?" 对于每个通配符,我希望字符串返回至少 26 个(不包括 'ñ' 和 'ng' 似乎已被菲律宾等一些国家添加)。所以一个带有 2 ? 的词会给我 26^2(我认为)的结果。

我希望它返回以下 NSArray:

theaora
theaorb
theaorc
...
thezora
thezorb
thezorc
...
thezorx
thezory
thezorz

由于这是递归(我假设)我遇到了问题...

我正在做这个:

NSArray *countOfWildCardArray = [wordToSearch componentsSeparatedByString:@"?"];
        int countOfWildCard = [countOfWildCardArray count] - 1;
        if (countOfWildCard > 0)
        {
            for ( NSInteger i = 0; i < countOfWildCard; i++) 
            {
                NSLog(@"Looking for wildcard #%i",i);
                for(char a = 'a'; a <= 'z'; a++)
                {   
                    NSString *tempStringA = [NSString stringWithString:wordToSearchFor];

                ......
                }
            }
        }

然后我就迷路了。我实际上不认为我在正确的轨道上。就像我说的,递归很困扰我:)

有人知道做什么吗?

因此,在收到几个问题后,我只想说明这个问题与让用户知道我可以从这些结果单词中生成多少字谜有关。我有一种为单词列表制作字谜的快速方法,我只是想创建要制作字谜的单词列表。我相信有比上述方法更好的方法。我要求的是帮助找到创建数组的最佳方法。

【问题讨论】:

  • 你为什么要这个?如果您要循环查看结果并尝试将它们与字符串匹配,那么这一定是我听说过的 glob 效率最低的实现。
  • @kevinballard 我现在已经在帖子的最后一段回答了你的问题。谢谢!
  • 你的新噩梦:??????????。享受生成 1.5 TB 字符串的乐趣。
  • 我知道。有大约 6 个字符的限制......但我理解危险。
  • 如果你只需要告诉用户你可以生成多少,你为什么要实际生成它们?只需计算"?" 的数量,然后将 26 提高到该次方即可。

标签: iphone objective-c regex replace wildcard


【解决方案1】:

试试这个,

NSArray *wildCardArray;
NSArray *countOfWildCardArray = [wordToSearch componentsSeparatedByString:@"?"];
        int countOfWildCard = [countOfWildCardArray count] - 1;
        if (countOfWildCard > 0)
        {
            for(char a = 'a'; a <= 'z'; a++)
             { 
                for(char b = 'a'; b <= 'z'; b++)
                {  
                     NSString *tempStringA=[NSString stringWithFormat:@"%@%c%@%c",[countOfWildCardArray objectAtIndex:0],a,[countOfWildCardArray objectAtIndex:1],b];
                     [wildCardArray addObject:tempStringA];
                }
            }
        }

【讨论】:

  • 嗯。不要看嘴里的礼物马:)但stringByAppendingFormat后面是不完整的格式。你的意思是@"%@%c", ... 另外,你为什么不使用char bchar a?他们不需要完成替换吗?感谢您的帮助。你能解释清楚一点吗? :)
  • 第一件事:感谢您的帮助!现在,最后一件事!我保证。 2 个? 就是一个例子。此替换将the?or? 变为 theaory、theaorz、thebora、theborb 等……但它也将the?or 变为相同的列表。换句话说,我如何更改它以仅更改单词包含的 ? 的确切数量。即:结束词将具有与起始词相同数量的替换字符。这将包括拥有 4 个 ? 或 5 个 ? 等。
  • stringByAppendingFormat ...这是一个混乱(我的打字问题)...对不起。
  • @Jann 你想替换吗?有字符吗?
  • 我想替换每个?与 A-Z。那么如果有一个呢?在字符串中,我会在一个数组中取回 26 个字符串。如果为 2,我会在一个数组中取回 26^2 个 nsstring。明白了吗?
猜你喜欢
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2012-08-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多