ios - 从一些已解析的 NSString 中提取文本

标签 ios objective-c regex nsstring nsregularexpression

这是我的示例字符串,从远程服务器解析:

NSString *example = @"#parsed Value1:1a 2013-02-20 10:00:00 UTC Value2=2a Value3=3a Value4=4aKm Value5=A"

我需要从上面的字符串中推断出单个 ValueS,分开,没有其他字符:

"1a"
"2013-02-20 10:00:00 UTC"
"2a"
"3a"
"4a"
"A"

请给我建议正确的代码来做到这一点(我已经尝试使用正则表达式但没有成功),谢谢!

最佳答案

如果格式保持不变,则不需要使用正则表达式。

尝试使用 NSScanner,尤其是方法 scanUpToString:intoString:scanString:intoString:

编辑:

这段代码应该是你需要的:

NSString *example = @"#parsed Value1:1a 2013-02-20 10:00:00 UTC Value2=2a Value3=3a Value4=4aKm Value5=A";

NSString *temp, *value1, *date, *value2, *value3, *value4, *value5;
NSScanner *scanner = [NSScanner scannerWithString:example];
// By default, NSScanner will skip whitespace - we don't want it to skip anything here
[scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@""]];
[scanner scanString:@"#parsed Value1:" intoString:&temp];
[scanner scanUpToString:@" " intoString:&value1];
[scanner scanString:@" " intoString:&temp];
[scanner scanUpToString:@" Value2=" intoString:&date];
[scanner scanString:@" Value2=" intoString:&temp];
[scanner scanUpToString:@" Value3=" intoString:&value2];
[scanner scanString:@" Value3=" intoString:&temp];
[scanner scanUpToString:@" Value4=" intoString:&value3];
[scanner scanString:@" Value4=" intoString:&temp];
[scanner scanUpToString:@" Value5=" intoString:&value4];
[scanner scanString:@" Value5=" intoString:&temp];
value5 = [example substringFromIndex:[scanner scanLocation]];

关于ios - 从一些已解析的 NSString 中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981817/

相关文章:

ios - iTunes Connect 不显示 "App Store Status"下的任何内容

ios - AppCode 不提示 RxSwift 类和其他一些已安装的 CocoaPods

ios - 应该如何分发使用 VOIP 标志始终保持连接的 b2b 应用程序

objective-c - 在 applicationDidEnterBackground 时运行重复计时器

ios - opengles在iphone中显示人脸

regex - 如何使用 Golang 正则表达式查找完全匹配的单词?

ios - 如何在 UIVideoEditorController 的工具栏上添加/修改按钮?

iphone - UILocalNotification 应用角标(Badge)编号重复

regex - 为什么这个 "grep -P"没有达到我的预期?

c - 词法分析器正确输出但指针 "filename"包含错误名称