Obj-C - 在 NSString 中获取字符串后的前 X 个字符?
Obj-C - Get first X number of characters after a string inside NSString?
我有这样的字符串:
NSString *testing = @"Feb 5 2021 05:00 PM, Feb 6 2021 07:00 PM";
就是说,我希望我的代码能够获取“2021 年 2 月 5 日”之后的 8 个字符,并将它们放入另一个字符串 (05:00 PM)。知道我该怎么做吗?我很难过,因为我只希望它抓住那个时间,而不是之后的其他角色。
这些日期也总是不同的,所以我不想简单地计算 'Feb 5 2021' 中的字符数(否则,如果该计数改变单个字符,代码将无法工作,哈哈).
有很多方法可以解决这个问题。但是,如果字符串输入的格式可靠并且性能或内存使用不是问题:
NSString *testing = @"Feb 5 2021 05:00 PM, Feb 6 2021 07:00 PM";
NSArray *tokens=[testing componentsSeparatedByString:@" "];
NSString *time=[NSString stringWithFormat:@"%@ %@",tokens[3],tokens[4]];
NSLog(@"time: %@",time);
如果你每次都需要,并且date/time个值的个数是可变的:
NSString *testing = @"Feb 5 2021 05:00 PM, Feb 6 2021 07:00 PM";
NSArray *datums=[testing componentsSeparatedByString:@", "];
for(NSString *datum in datums)
{
NSArray *tokens=[datum componentsSeparatedByString:@" "];
NSString *time=[NSString stringWithFormat:@"%@ %@",tokens[3],tokens[4]];
NSLog(@"time: %@",time);
}
请注意,如果字符串可能为空或包含无效数据,您将需要进行额外的错误检查。
您的输入似乎是 固定 格式的日期时间值列表,即月份或数字中的字符数可能会改变,但总体模式保持不变一样。
如果是这种情况并且您只想在文本级别进行操作,即您不希望解析字符串以生成 NSDate
值,则可以使用 NSRegularExpression
。使用分组构建日期时间格式的模式以捕获要提取的日期时间部分,然后使用 NSRegularExpression
的方法处理字符串中的所有匹配项。
如果您的代码无法正常工作,请提出一个新问题,显示您生成的内容并描述问题 - 毫无疑问会有人帮助您。
HTH
我有这样的字符串:
NSString *testing = @"Feb 5 2021 05:00 PM, Feb 6 2021 07:00 PM";
就是说,我希望我的代码能够获取“2021 年 2 月 5 日”之后的 8 个字符,并将它们放入另一个字符串 (05:00 PM)。知道我该怎么做吗?我很难过,因为我只希望它抓住那个时间,而不是之后的其他角色。
这些日期也总是不同的,所以我不想简单地计算 'Feb 5 2021' 中的字符数(否则,如果该计数改变单个字符,代码将无法工作,哈哈).
有很多方法可以解决这个问题。但是,如果字符串输入的格式可靠并且性能或内存使用不是问题:
NSString *testing = @"Feb 5 2021 05:00 PM, Feb 6 2021 07:00 PM";
NSArray *tokens=[testing componentsSeparatedByString:@" "];
NSString *time=[NSString stringWithFormat:@"%@ %@",tokens[3],tokens[4]];
NSLog(@"time: %@",time);
如果你每次都需要,并且date/time个值的个数是可变的:
NSString *testing = @"Feb 5 2021 05:00 PM, Feb 6 2021 07:00 PM";
NSArray *datums=[testing componentsSeparatedByString:@", "];
for(NSString *datum in datums)
{
NSArray *tokens=[datum componentsSeparatedByString:@" "];
NSString *time=[NSString stringWithFormat:@"%@ %@",tokens[3],tokens[4]];
NSLog(@"time: %@",time);
}
请注意,如果字符串可能为空或包含无效数据,您将需要进行额外的错误检查。
您的输入似乎是 固定 格式的日期时间值列表,即月份或数字中的字符数可能会改变,但总体模式保持不变一样。
如果是这种情况并且您只想在文本级别进行操作,即您不希望解析字符串以生成 NSDate
值,则可以使用 NSRegularExpression
。使用分组构建日期时间格式的模式以捕获要提取的日期时间部分,然后使用 NSRegularExpression
的方法处理字符串中的所有匹配项。
如果您的代码无法正常工作,请提出一个新问题,显示您生成的内容并描述问题 - 毫无疑问会有人帮助您。
HTH