gpt4 book ai didi

ios - unichar characterAtIndex 具有特定字符

转载 作者:行者123 更新时间:2023-11-29 03:40:10 25 4
gpt4 key购买 nike

我使用以下简单的方法来显示我的 NSString 中的每个字母/字符,并计算我的 NSString 是否少于 14 个字母,然后显示来自的其余字母Unichar 数组,总共 14 个字母。

这里是一个示例代码:

NSString *str = @"HELLO";

//unichar chrs [14] ={0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // this works great, shows English chars

unichar chrs [14] ={L'б', L'в', L'г',L'д',L'ж',L'з',L'к',L'л',L'м',L'н',L'п',L'р',L'с',L'т'}; // doesnt work


for (int i = 0; i < str.length; i++) {

int index = (arc4random() % 14);
while (chrs[index] != 0)
{
index = (arc4random() % 14);
}
chrs[index] = [str characterAtIndex: i];
}
for (int i = 0; i < 14; i++) {
if (chrs[i] == 0) chrs[i] = (arc4random() % 26) + 65;
}


for (int i = 0; i < 14; i++) {


NSLog(@"%C", chrs[i]);
}

如您所见,注释行有效。但我的问题是,unichar chrs 其中包含特定的俄语字母。

我做错了什么?为什么第一个带有注释的 unichar chrs 有效,但这个带有西里尔字母声明的字母却不起作用。

谢谢

最佳答案

我认为这符合您的要求(但我不能 100% 确定您的目标):

NSString *str = @"HELLO";
unichar result[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
// "chrs" can have any number of letters as needed
unichar chrs[14] = {L'б', L'в', L'г',L'д',L'ж',L'з',L'к',L'л',L'м',L'н',L'п',L'р',L'с',L'т'};

int resultLen = sizeof(result) / sizeof(unichar);
int chrsLen = sizeof(chrs) / sizeof(unichar);
// Scatter the letters from "str" through "result"
for (int i = 0; i < str.length; i++) {
int index;
do {
index = arc4random_uniform(resultLen);
} while (result[index] != 0);

result[index] = [str characterAtIndex:i];
}

// Fill in the remaining open spots in "result" with random letters from "chrs"
for (int i = 0; i < resultLen; i++) {
if (result[i] == 0) {
result[i] = chrs[arc4random_uniform(chrsLen)];
}
}

for (int i = 0; i < resultLen; i++) {
NSLog(@"%C", result[i]);
}

此解决方案有一个缺陷。很可能可以多次使用 chrs 中的相同字符来填充 result 中的额外位置。如果这是一个问题,则需要更多逻辑。

关于ios - unichar characterAtIndex 具有特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18564222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com