过滤日期字符串

时间:2013-02-14 20:57:27

标签: objective-c cocoa-touch cocoa

我有一个看起来像这样的字符串:

  

“51403074 0001048713 1302130446 TOMTOM101订购   51403074-3-278065518:ontvangen“

此字符串从包含类似字符串的数组中过滤掉。该字符串包含一些相关数据和一些不相关的数据。字符串中唯一相关的部分是:1302130446。该数字表示日期和时间(yy / mm / dd / hh / mm)。因为这部分是日期和时间,所以每次都不一样。

如何过滤此字符串,以便我有一个只包含相关部分的字符串。

抱歉还在学习IOS开发。

3 个答案:

答案 0 :(得分:4)

如果日期字符串始终是第三个单词,则可以将NSString拆分为单词数组

NSString *myString = @"This is a test";
NSArray *myWords = [myString componentsSeparatedByString:@" "];

然后访问数组中的第三项以获取所需的字符串。

编辑(由于评论):为了确保从单词数组中获取正确的字符串,您需要为字符串添加唯一标识符。可能是'TOMTOM101'总是跟随日期字符串或其他东西......

**编辑2(由于需要示例代码)

NSUInteger counter = 0;
NSUInteger dateStringIndex = 0;
for(NSString *str in myWords) {
    counter ++;
    if([str isEqualToString:@"TOMTOM101"]) {
        dateStringIndex = counter - 1;

        //We now know which word is the date number, so we can stop looping.
        break;
    }
}

(不是编译代码)

答案 1 :(得分:0)

似乎相关的字符串长度为10个字符。

如果此相关字符串的位置在原始字符串中固定(在TOMTOM之后,

然后你可以这样做: -

遍历原始字符串的长度,并查找='TOMTOM'的块

迭代时为count添加一个计数器值,每当你遇到'空格'时,将它更新为1 ....当你遇到第一个'空格'时,添加一个计数器值,比如count = 1,然后当你遇见第二个空格,更新计数= 2 ..等等,

当你找到TOMTOM时,你的计数器将有一个值,比如= 4,因此你知道日期字符串位于count设置= 3之后且计数设置= 4之前。

while count = 3 do:从原始字符串中提取'相关字符串'。当你遇到下一个'空格'时,更新count = 4,因此停止从原始字符串中提取。

答案 2 :(得分:0)

您所要做的就是将原始字符串与单字母空格分开。

NSString *whatever = @"51403074 0001048713 1302130446 TOMTOM101 Order 51403074-3-278065518: ontvangen"
NSString *mydatestring = [self NthString:whatever :@" " :2];

- (NSString *)NthString:(NSString *)source:(NSString *)part:(NSInteger)i {
if (i >= 0) {
    NSArray* components = [source componentsSeparatedByString:part];
    return [components objectAtIndex:i];
}
else {
    return @"";
}
}