更新1在字符串
建立在以前的更新与焦炭循环,我想我有一个更好地了解这样做,但我需要回答这个问题。在当前的for
循环中有一个名为tstring
的变量。我需要做一些类似于以下的事情,但它不起作用。我收到错误Collection expression type 'NSString *' may not respond to countByEnumeratingWithState:objects:count:'
如何修复for
子句?
for (NSUInteger i = 1; i < match.numberOfRanges; ++i)
{
NSRange matchedRange = [match rangeAtIndex: i];
NSString* tstring = [string substringWithRange: matchedRange];
for (char* suit in tstring){ // error here ********
NSLog(@"char: %@",suit);}
NSLog(@"range %lu string: %@", (unsigned long)i, tstring);
}
更新1
更新0
这里是另一种方法,不需要进行搜索,但我仍然没有任何想法如何做到这一点的方法for循环的上下文。
我需要一个字典,如下面的示意图表示,它与每个卡(2到Ace)从0到12的整数相关联。(我想我知道如何在C中创建字典;也许不在Objective-C中。 )
┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──┬──┬──┐
│0│1│2│3│4│5│6│7│8│9│10│11│12│
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼──┼──┼──┤
│2│3│4│5│6│7│8│9│T│J│Q │K │A │
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴──┴──┴──┘
我需要一个结构与四个名词或数组,我不知道哪个,每个长度13这样。这与原始结构类似,但现在成员是卡牌套装,而不是玩家的职位。
struct board {
int num;
char spade[13]
char heart[13]
char diamond[13]
char club[13]
};
假设局数1以下的交易,
Q952.652.KJT4.95 T.KQT84.A865.J73 K8763.A7.Q.KQT84 AJ4.J93.9732.A62
我需要为我的代码回路在下面的过程。
spade[10] = N
spade[7] = N
spade[3] = N
spade[0] = N
heart[4] = N
heart[3] = N
etc.
的问题是,“你怎么做到这一点的处理在for循环中?”
更新0
下面的代码为我工作,但我需要改变它下面描述的目的。我的控制台输出(至少,开头)也在下面提供。从输出中,我需要以特殊的方式保留范围1和范围4到19的结果。
下面的小表包含4乘4阵列中的范围数字,带有标记为黑桃,心形,钻石,俱乐部和标为北,东,南和西的列的行。当选择Heart时,我需要搜索行H的内容以确定该卡是否在N,E,S或W中并报告结果。请注意,在表格中,每个单元格的内容都是一个字符串,其中包含任何内容(为空)或来自'23456789TJQKA'的一组字母,每行都包含13个字母。表格中的数字仅指当前输出中的范围编号。
N E S W
S 4 8 12 16
H 5 9 13 17
D 6 10 14 18
C 7 11 15 19
我想了解如何将结果存储在预期的搜索任务中。我可以创建一个C结构,每个成员都包含整数板号(1到36之间的数字)和4个字符串吗?例如,下面的结构可以工作吗?如果是这样,那么如何在objective-c中的这样的结构中进行搜索?我也可以使用一些帮助填充循环中的结构。
struct board {
int num;
char N[13]
char E[13]
char S[13]
char W[13]
};
代码摘录如下。
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:toMatch options:NSRegularExpressionDotMatchesLineSeparators error:&error];
NSLog(@"pattern length: %lu", (unsigned long)[toMatch length]);
NSUInteger numberOfMatches = [regex numberOfMatchesInString:string options:0 range:NSMakeRange(0, [string length])];
NSLog(@"number of matches: %lu", (unsigned long)numberOfMatches);
for (NSTextCheckingResult* match in [regex matchesInString:string options:NSRegularExpressionDotMatchesLineSeparators range:NSMakeRange(0, [string length])])
{
NSLog(@"Number of ranges in match: %u", match.numberOfRanges);
for (NSUInteger i = 0; i < match.numberOfRanges; ++i)
{
NSRange matchedRange = [match rangeAtIndex: i];
NSString* tstring = [string substringWithRange: matchedRange];
NSLog(@"range %lu string: %@", (unsigned long)i, tstring);
}
}
样本输出如下。
2013-02-04 16:24:06.583 [71684:11303] string length: 22365
2013-02-04 16:24:06.591 [71684:11303] pattern length: 347
2013-02-04 16:24:06.602 [71684:11303] number of matches: 36
2013-02-04 16:24:06.613 [71684:11303] Number of ranges in match: 20
2013-02-04 16:24:06.613 [71684:11303] range 0 string:
[Board "1"]
[West ""]
[North ""]
[East ""]
[South ""]
[Dealer "N"]
[Vulnerable "None"]
[Deal "N:Q952.652.KJT4.95 T.KQT84.A865.J73 K8763.A7.Q.KQT84 AJ4.J93.9732.A62"]
2013-02-04 16:24:06.613 [71684:11303] range 1 string: 1
2013-02-04 16:24:06.613 [71684:11303] range 2 string: N
2013-02-04 16:24:06.614 [71684:11303] range 3 string: None
2013-02-04 16:24:06.614 [71684:11303] range 4 string: Q952
2013-02-04 16:24:06.614 [71684:11303] range 5 string: 652
2013-02-04 16:24:06.614 [71684:11303] range 6 string: KJT4
2013-02-04 16:24:06.614 [71684:11303] range 7 string: 95
2013-02-04 16:24:06.614 [71684:11303] range 8 string: T
2013-02-04 16:24:06.614 [71684:11303] range 9 string: KQT84
2013-02-04 16:24:06.614 [71684:11303] range 10 string: A865
2013-02-04 16:24:06.615 [71684:11303] range 11 string: J73
2013-02-04 16:24:06.615 [71684:11303] range 12 string: K8763
2013-02-04 16:24:06.615 [71684:11303] range 13 string: A7
2013-02-04 16:24:06.615 [71684:11303] range 14 string: Q
2013-02-04 16:24:06.615 [71684:11303] range 15 string: KQT84
2013-02-04 16:24:06.616 [71684:11303] range 16 string: AJ4
2013-02-04 16:24:06.616 [71684:11303] range 17 string: J93
2013-02-04 16:24:06.616 [71684:11303] range 18 string: 9732
2013-02-04 16:24:06.616 [71684:11303] range 19 string: A62
什么是“搜索任务”在这里?寻找包含特定卡的电路板?我们需要更多细节。 – ipmcc
每块板上有52张牌,黑桃,心形,钻石和俱乐部各有13张。当52张牌中的每一张都是随机出现时,每次一张,搜索就是找出哪个人获得了牌:北,南,西或东。 – zerowords
你想根据其中一个'board'结构来查看它,这些结构已经从输入中的一个'[Deal ...]'行填充了吗? – ipmcc