【问题标题】:How can I substring in a required format in ios [duplicate]如何在ios中以所需格式子串[重复]
【发布时间】:2015-03-27 12:15:25
【问题描述】:

我有一个这样的字符串,

NSString *strTest = @"Hii how are you doing @Ravi , how do u do @Kiran  where are you @Varun";

我想要一个来自上述字符串的子字符串,它只包含以'@'开头的单词
即我需要

NSString *strSubstring =  @"Ravi @kiran @varun";  

请帮助我如何实现这一目标

【问题讨论】:

    标签: ios objective-c nsstring substring


    【解决方案1】:

    分隔字符串如下:-

    NSArray * names = [myString componentsSeparatedByString:@" "];
    

    names 数组现在将包含字符串中的所有单词,现在您可以遍历数组并检查其索引中的哪个包含“@”字符。

    如果找到“@”,则将该索引值存储在某个变量中。

    【讨论】:

    • 因为我有很多换行符和空格,所以它也会占用下一个单词,即使在使用 NSString *strTrimmerContent = [strContent stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] 修剪我的字符串之后也是如此strTrimmerContent = [strTrimmerContent stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]];
    • 我已经通过 replaceString @"\n" Bystrng@" " 删除了这些换行符,它工作正常,谢谢大家的时间
    【解决方案2】:

    您会喜欢实现此代码。我使用正则表达式来执行这项工作。它会给你匹配的字符串。

    NSString *strTest = @"Hii how are you doing @Ravi , how do u do @Kiran  where are you @Varun";
    NSError *error;
    //&[^;]*;
    NSRegularExpression *exp =[NSRegularExpression regularExpressionWithPattern:@"@[^ ]*" options:NSRegularExpressionCaseInsensitive error:&error];
    NSArray *s1= [exp matchesInString:strTest options:NSMatchingReportCompletion range:NSMakeRange(0, [strTest length]) ];
        [s1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            NSTextCheckingResult *result = obj;
            NSString *str = [strTest substringWithRange:result.range];
            NSLog(@"str %@",str);
    
        }];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      相关资源
      最近更新 更多