【问题标题】:Breaking Up a String in Objective-C在 Objective-C 中分解字符串
【发布时间】:2012-03-30 12:00:39
【问题描述】:

全部,

我有一个方法,它从数据库中获取一个日期 (YYYY-MM-DD H:M:S),并从日期字符串中创建一个包含年、月和日组件的 URL。我的解决方案有效,但我想知道是否有更好的方法来做到这一点?酷孩子们是怎么做到的? :-)

谢谢!

   -(NSString *) prettyURLFrom:(NSString *)dateString{



    NSString * URLString = @"";
    NSString *URL = @"http://www.theblues.com/featured/article/";

    NSArray *myWords = [dateString componentsSeparatedByCharactersInSet:
                        [NSCharacterSet characterSetWithCharactersInString:@"-\" \" :"]
                        ];


    URLString = [NSString stringWithFormat:@"%@%@/%@/%@", 
                    URL,
                    [myWords objectAtIndex:1],
                    [myWords objectAtIndex:2],
                    [myWords objectAtIndex:0]];



    return URLString;


   }

【问题讨论】:

  • 您是从数据库中检索字符串还是日期对象?
  • 是的。 SQLite3。我想我知道你要去哪里 - 在数据库端格式化字符串,对吧?
  • 我想知道为什么你没有将日期作为 NSDate 传递,而是返回一个字符串而不是一个 NSURL。
  • 一定是我的 Perl 背景 :-)
  • 实际上,最终创建的 URL 将进入电子邮件的正文。不确定在这种情况下是否需要 NSURL?

标签: objective-c nsstring nsdateformatter nscharacterset


【解决方案1】:

就像我在 cmets 中所说的那样,我觉得奇怪的是,当它们可能应该分别是 NSDate 和 NSURL 时,你将值作为字符串传递和返回。

我可能会这样做:

-(NSURL*)URLFromDate:(NSDate*)date
{
    // Assumes user uses a gregorian calendar
    NSDateComponents *dateComp = [[NSCalendar currentCalendar] components:(NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) fromDate:date];

    return [NSURL URLWithString:[NSString stringWithFormat:@"http://www.theblues.com/featured/article/%li/%li/%li"
                                    , [dateComp year]
                                    , [dateComp month]
                                    , [dateComp day]]];
}

【讨论】:

  • 是的,你是对的。会做你建议的事情。谢谢
  • 澄清一下,对于使用上面提供的示例的任何人 - 使用上面提供的 NSDateComponents 的解决方案需要格式说明符 %li,而不是 %@ 所以:theblues.com/featured/article/%li/%li/%li 感谢大家对此的帮助.
【解决方案2】:

如果你有NSDate 对象,那么你可以使用

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:date];

    NSInteger day = [components day];
    NSInteger month = [components month];
    NSInteger year = [components year];  

NSString 到 NSDate

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YYYY-MM-DD HH:MM:SS"];

NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:@"1999-07-02 2:2:4"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2011-10-27
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多