gpt4 book ai didi

iphone - 在 ObjC 中获取两个其他字符串之间的字符串

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

我正在尝试解析一个字符串并在中间获取另一个字符串。

即。

你好,这是一个字符串

我需要找到“world”和“is”之间的字符串 (this)。我环顾四周,但还没弄明白,主要是因为我是 Objective C 的新手……有人知道如何使用 RegEx 或不使用 RegEx 吗?

最佳答案

Jacques 提供的正则表达式解决方案有效,要求 iOS 4.0 及更高版本的警告是正确的。使用正则表达式也很慢,如果搜索表达式是已知的字符串常量,那就太过分了。

您可以使用 NSString 上的方法或名为 NSScanner 的类来解决问题,这两种方法自 iPhone OS 2.0 以来就已经可用,而且早在 Mac OS 之前X 10.0 实际上 :).

那么你想要的是像这样在 NSString 上添加一个新方法吗?

@interface NSString (CWAddition)
- (NSString*) stringBetweenString:(NSString*)start andString:(NSString*)end;
@end

没问题,我们假设我们应该返回 nil 是因为找不到这样的字符串。

仅使用 NSString 的实现非常简单:

@implementation NSString (NSAddition)
- (NSString*) stringBetweenString:(NSString*)start andString:(NSString*)end {
NSRange startRange = [self rangeOfString:start];
if (startRange.location != NSNotFound) {
NSRange targetRange;
targetRange.location = startRange.location + startRange.length;
targetRange.length = [self length] - targetRange.location;
NSRange endRange = [self rangeOfString:end options:0 range:targetRange];
if (endRange.location != NSNotFound) {
targetRange.length = endRange.location - targetRange.location;
return [self substringWithRange:targetRange];
}
}
return nil;
}
@end

或者您可以使用 NSScanner 类来实现:

@implementation NSString (NSAddition)
- (NSString*) stringBetweenString:(NSString*)start andString:(NSString*)end {
NSScanner* scanner = [NSScanner scannerWithString:self];
[scanner setCharactersToBeSkipped:nil];
[scanner scanUpToString:start intoString:NULL];
if ([scanner scanString:start intoString:NULL]) {
NSString* result = nil;
if ([scanner scanUpToString:end intoString:&result]) {
return result;
}
}
return nil;
}
@end

关于iphone - 在 ObjC 中获取两个其他字符串之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4002360/

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