0

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

“51403074 0001048713 1302130446 TOMTOM101 订单 51403074-3-278065518:ontvangen”

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

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

抱歉还在学习IOS开发。

4

3 回答 3

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;
    }
}

(未编译的代码)

于 2013-02-14T21:08:14.437 回答
0

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

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

然后你可以做这样的事情: -

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

迭代时为计数添加一个计数器值,将其更新为 1,每当您遇到“空格”时......也就是当您遇到第一个“空格”时,添加一个计数器值,例如 count = 1,然后当您遇到第二个空间,更新计数 = 2.. 等等,

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

while count = 3 do: extract 'relevant string from original string'。当您遇到下一个“空格”时,更新计数 = 4,因此停止从原始字符串中提取。

于 2013-02-14T21:14:09.480 回答
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 @"";
}
}
于 2013-02-14T22:08:55.407 回答