【问题标题】:Grab numbers after a colon?冒号后面的数字?
【发布时间】:2011-05-25 15:59:57
【问题描述】:

我有一个如下所示的时间字符串:5:34 pm。我想抓住5,把它放到一个变量中,然后把34 放到一个变量中。这可能吗?

提前致谢!

【问题讨论】:

  • 您对您的问题有很好的字面答案,但如果您尝试解析时间,请参阅 -[NSDateFormatter dateFromString:]。
  • @Ken 我尝试使用它,但我只需要解析字符串就可以了。不过谢谢!

标签: iphone objective-c int formatter


【解决方案1】:

注意上面列出的 NSString 技术。如果您的字符串缺少冒号,您将在获取 objectAtIndex:1 时崩溃。 (我会对此发表评论,但我缺乏足够的代表。)

这应该更健壮一些。

int hours, minutes;
if (2 == sscanf([timeString UTF8String], "%d:%d", &hours, &minutes))
{
    // congratulations, you did it
}
else
{
    // the string was malformed
}

【讨论】:

  • 不确定我应该使用 C 风格的函数还是 Objective-C 风格的方法?
  • 很确定它总是有一个冒号。
  • 此外,即使在其他方法中,也很容易检查格式错误的 euqations:只需检查 splitString.count>1。另外,如果您需要更多控制权,我建议您查看NSScanner
  • 如果我学到了一件事,那就是你永远不知道什么时候会出现格式错误的输入。即使您认为它永远不会出错,最好还是检查一下,而不是保存一行代码然后在现场崩溃,因为您正在访问数组的末尾。
【解决方案2】:
NSArray *splitString = [timeString componentsSeparatedByString:@":"];
if ([splitString count] > 1 {
    NSString *hours = [splitString objectAtIndex:0];
    NSString *minutes = [splitString objectAtIndex:1];
}
else {
    //improperly formatted string
}

【讨论】:

  • 漂亮!正是我需要的。谢谢,一有空就会接受。
  • 没问题!我记得回来找这种方法。 :-)
猜你喜欢
  • 2017-04-22
  • 2018-05-04
  • 2013-07-18
  • 1970-01-01
  • 2015-04-05
  • 2021-09-09
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
相关资源
最近更新 更多