gpt4 book ai didi

ios - NS字符串 : String extraction from a comma Separated NSString

转载 作者:行者123 更新时间:2023-11-28 18:12:01 25 4
gpt4 key购买 nike

下面是我作为结果返回的两个用逗号分隔的字符串示例:

NSString *placeResult = @"111 Main Street, Cupertino, CA"

或者有时结果包含地名:

NSString *placeResult = @"Starbucks, 222 Main Street, Cupertino, CA"

检查上面的字符串是否以姓名或街道地址开头的最佳方法是什么?

如果它确实以名称开头(即上面第二个示例中的星巴克“),我想提取名称并将其存储到另一个变量中。因此提取后的字符串将是:

NSLog (@"%s", placeResult);

日志会打印:

"222 Main Street, Cupertino, CA" 

另一个字符串现在将在其中存储@"Starbucks":

NSLog (@"%s", placeName);

日志会打印:

"Starbucks" 

重要提示:我不能在提取后丢失逗号分隔符。

谢谢!

最佳答案

利用 NSDataDetectorNSTextCheckingResult:

NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeAddress error:nil];
NSString *str = @"Starbucks, 222 Main Street, Cupertino, CA";
NSArray *matches = [detector matchesInString:str options:0 range:NSMakeRange(0, str.length)];
for (NSTextCheckingResult *match in matches) {
if (match.resultType == NSTextCheckingTypeAddress) {
NSDictionary *data = [match addressComponents];
NSLog(@"address = %@, range: %@", data, NSStringFromRange(match.range));

NSString *name = data[NSTextCheckingNameKey];
if (!name && match.range.location > 0) {
name = [str substringToIndex:match.range.location - 1];
// "name" may now include a trailing comma and space - strip these as needed
}
}
}

这个输出:

address = {
City = Cupertino;
State = CA;
Street = "222 Main Street";
}, range: {11, 30}

奇怪的是,生成的结果字典不包含对“Starbucks”部分的引用。您可以做的是检查 addressComponents 是否包含 NSTextCheckingNameKey 的值。如果不是,请检查匹配范围。如果匹配的范围不是字符串的开头,那么您可以使用该值从字符串的开头提取名称。

关于ios - NS字符串 : String extraction from a comma Separated NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16203178/

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