我想洗牌包含希臘字符的字符串:洗牌iOS中一個希臘字打印未知符號
這裏是我的代碼:
- (void)shuffle {
NSLog(@"Will shuffle :%@",anagram2);
NSData* data = [anagram2 dataUsingEncoding:NSWindowsCP1253StringEncoding];
NSLog(@"after encoding :%@",anagram2);
NSString *someString = [[NSString alloc]initWithData:data encoding:NSWindowsCP1253StringEncoding];
NSLog(@"Greek word:%@",someString);
int length = anagram2.length;
NSMutableArray *letters = [[NSMutableArray alloc] init];
for (int i = 0; i< length; i++) {
NSString *letter = [NSString stringWithFormat:@"%c", [someString characterAtIndex:i]];
NSLog(@"Character:%@",letter);
[letters addObject:someLetter];
}
for (int i = 0; i<length; i++) {
int value = arc4random() % (length-1);
//NSLog(@"Value is : %i", value);
[letters exchangeObjectAtIndex:i withObjectAtIndex:value];
}
}
我可以正確地看到希臘字。但洗牌不起作用。如何提取每個字符並將其添加到字母數組中。它適用於英文單詞但不適用於希臘單詞,所以我想我應該取代它:
NSString *letter = [NSString stringWithFormat:@"%c", [someString characterAtIndex:i]];
與其他東西。
你爲什麼要解碼,然後用相同的字符編碼重新編碼字符串數據?這似乎毫無意義,如果你想要的只是一個字符串字符串的副本(當你將所有字符複製到可變數組中時,你甚至不需要這樣做)(順便說一句,你可以預先分配一個大小等於使用'initWithCapacity:'的字母數量,可以讓事情更有效率。))。 – JAB
@JAB我這樣做來回調試。你能告訴我我應該打電話什麼地方嗎? – ghostrider
發佈的代碼的另一個問題 - 你從'anagram2'派生'length',但是你從'someString'中提取字符。確保兩者都使用相同的字符串。 – rmaddy