Objective-C:如何提取字符串的一部分(例如从 '#' 开始)

标签 objective-c ios hash nsstring substring

我有一个字符串,如下所示,

NSString * aString = @"This is the #substring1 and #subString2 I want";

如何只选择以“#”开头(并以空格结尾)的文本,在本例中为“subString1”和“subString2”?

注意:为清楚起见,对问题进行了编辑

最佳答案

您可以使用 NSScanner 来做到这一点拆分字符串。此代码将遍历一个字符串并用子字符串填充一个数组。

NSString * aString = @"This is the #substring1 and #subString2 I want";
NSMutableArray *substrings = [NSMutableArray new];
NSScanner *scanner = [NSScanner scannerWithString:aString];
[scanner scanUpToString:@"#" intoString:nil]; // Scan all characters before #
while(![scanner isAtEnd]) {
    NSString *substring = nil;
    [scanner scanString:@"#" intoString:nil]; // Scan the # character
    if([scanner scanUpToString:@" " intoString:&substring]) {
        // If the space immediately followed the #, this will be skipped
        [substrings addObject:substring];
    }
    [scanner scanUpToString:@"#" intoString:nil]; // Scan all characters before next #
}
// do something with substrings
[substrings release];

下面是代码的工作原理:

  1. 最多扫描 #。如果未找到,扫描器将位于字符串的末尾。
  2. 如果扫描器位于字符串的末尾,我们就完成了。
  3. 扫描 # 字符,使其不在输出中。
  4. 向上扫描一个空格,扫描到的字符存放在substring中。如果 # 是最后一个字符,或者紧跟一个空格,该方法将返回 NO。否则它将返回 YES。
  5. 如果字符被扫描(该方法返回 YES),将 substring 添加到 substrings 数组。
  6. 转到 1

关于Objective-C:如何提取字符串的一部分(例如从 '#' 开始),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6825834/

相关文章:

ios - 用于自动调整 UIView 大小的圆角

security - 小书签安全注意事项、CSRF、散列 key

arrays - 将散列转换为数组

ios - 切换到另一个应用程序/主屏幕时如何完全关闭 iOS 应用程序(删除它使用的 RAM)

ios - NSBundle.mainBundle().pathForResource 返回 nil

iphone - Objc - Objective-C 语言中是否还需要 @private 指令?

ios - 为给定字符串的所有字符突出显示字符串中的特定字符

iphone - 如何从 Objective C 中的 XML-RPC 响应中获取 display_name

ios - 多个 GoogleService-Info 支持

ruby - 从哈希数组中的哈希中获取 id