更新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