gpt4 book ai didi

objective-c - 将 NSString 中的字符按字母顺序排序

转载 作者:太空狗 更新时间:2023-10-30 03:30:49 26 4
gpt4 key购买 nike

我正在尝试按字母顺序重新排列单词。例如,tomato 会变成 amoott,或者 stack 会变​​成 ackst。

我发现了一些在 C 语言中使用 char 数组执行此操作的方法,但我在使其在 NSString 对象的范围内工作时遇到了问题。

在 NSString 对象本身中有没有更简单的方法来做到这一点?

最佳答案

您可以将字符串的每个字符存储到 NSNumber 对象的 NSArray 中,然后对其进行排序。似乎有点贵,所以我可能会改用 qsort()

此处它作为 Objective-C 类别提供(未经测试):

NSString+SortExtension.h:

#import <Foundation/Foundation.h>

@interface NSString (SortExtension)
- (NSString *)sorted;
@end

NSString+SortExtension.m:

#import "NSString+SortExtension.h"

@implementation NSString (SortExtension)

- (NSString *)sorted
{
// init
NSUInteger length = [self length];
unichar *chars = (unichar *)malloc(sizeof(unichar) * length);

// extract
[self getCharacters:chars range:NSMakeRange(0, length)];

// sort (for western alphabets only)
qsort_b(chars, length, sizeof(unichar), ^(const void *l, const void *r) {
unichar left = *(unichar *)l;
unichar right = *(unichar *)r;
return (int)(left - right);
});

// recreate
NSString *sorted = [NSString stringWithCharacters:chars length:length];

// clean-up
free(chars);

return sorted;
}

@end

关于objective-c - 将 NSString 中的字符按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359410/

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