我有一个看起来像这样的字符串:
“51403074 0001048713 1302130446 TOMTOM101订购 51403074-3-278065518:ontvangen“
此字符串从包含类似字符串的数组中过滤掉。该字符串包含一些相关数据和一些不相关的数据。字符串中唯一相关的部分是:1302130446
。该数字表示日期和时间(yy / mm / dd / hh / mm)。因为这部分是日期和时间,所以每次都不一样。
如何过滤此字符串,以便我有一个只包含相关部分的字符串。
抱歉还在学习IOS开发。
答案 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 @"";
}
}