gpt4 book ai didi

ios - 按特定字符划分 NSString

转载 作者:行者123 更新时间:2023-11-28 22:15:10 39 4
gpt4 key购买 nike

我正在开发一款应用来帮助学生学习,但我遇到了问题。该应用程序可让您在其他事情之间做笔记,但我需要帮助才能使我的代码正常工作。我试图将一个 NSString 分成一个特定的字符,例如用户在注释中写道“海豚:是鲸类哺乳动物……”我需要应用程序来识别字符:和左边的部分也需要保存以备后用,作为一个变量,右边的部分也需要保存,但作为一个不同的变量,所以我以后可以使用它们。现在我是这样做的

NSArray *card = [_argumentTextView.text componentsSeparatedByString:@":"]; 

QueRes *make = [QueRes sharedInstance];

make.question = card [0];
make.response = card [1];

但是,当我使用可变问题和可变响应时,它显示为空白或没有任何内容。我这样使用变量:

QueRes *make = [QueRes sharedInstance];
_questionTextView.text = make.question;

顺便说一句,我用来声明变量的方法是:

在h

@interface PreRes : NSObject

{
NSString *_response;
NSString *_question;
}

*+* (PreRes *)sharedInstance;

@property(strong, nonatomic, readwrite) NSString *question;
@property(strong, nonatomic, readwrite) NSString *response;

@end

在中

@implementation QueRes  

@synthesize response = _response;
@synthesize question = _question;

+ (QueRes *)sharedInstance
{
static dispatch_once_t onceToken;
static QueRes *instance = nil;
dispatch_once(&onceToken, ^{
instance = [[QueRes alloc] init];
});

return instance;
}

- (id)init
{

self = [super init];

if (self)
{
_question = nil;
_response = nil;
}


return self;
}
@end

最佳答案

在 Objective-C/Cocoa 中拆分字符串可以使用 NSString 上的这两个方法来完成:

- (NSArray *)componentsSeparatedByString:(NSString *)separator;
- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator;

来自 componentsSeparatedByString: 的文档:


数组中的子字符串按照它们在接收器中的顺序出现。分隔符字符串的相邻出现在结果中产生空字符串。同样,如果字符串以分隔符开头或结尾,则第一个或最后一个子字符串分别为空。例如,这个代码片段:

NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];

产生一个数组{ @"Norman", @"Stanley", @"Fletcher"}。

如果列表以逗号和空格开头——例如,“, Norman, Stanley, Fletcher”——数组包含以下内容:{ @"", @"Norman", @"Stanley", @"弗莱彻”

如果列表没有分隔符——例如,“Norman”——数组包含字符串本身,在本例中为 { @"Norman"}


不过,这两种方法实际上并不适用于稳健的文本处理任务。您可能应该查看以下 API:

- (void)enumerateLinguisticTagsInRange:(NSRange)range 
scheme:(NSString *)tagScheme
options:(NSLinguisticTaggerOptions)opts
orthography:(NSOrthography *)orthography
usingBlock:(void (^)(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop))block;

- (void)enumerateSubstringsInRange:(NSRange)range
options:(NSStringEnumerationOptions)opts
usingBlock:(void (^)(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop))block;

此外,请注意,如果 componentsSeparatedByString: 返回的项少于您的预期,则盲目访问 componentsSeparatedByString: 返回的数组项将会崩溃并出现索引超出范围异常。如果字符串在您上面发布的代码中缺少分号,就会出现这种情况。

您应该验证返回的数组是正确的/预期的长度。例如:

if ([card count] >= 2)
{
make.question = card[0];
make.response = card[1];
}

从你的问题来看,我认为你的问题可能在于你的“单例”而不是你的字符串拆分逻辑。

关于ios - 按特定字符划分 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894539/

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