Ios6 解析大字符串&;在iOS 6+;中用新值替换解析的字符串值;
在我的应用程序中,我想按照以下步骤获得最终的字符串。 我的信息格式如下Ios6 解析大字符串&;在iOS 6+;中用新值替换解析的字符串值;,ios6,replace,string-parsing,Ios6,Replace,String Parsing,在我的应用程序中,我想按照以下步骤获得最终的字符串。 我的信息格式如下 message <br/><br/> On {date_time_stamp} sender_name wrote <br/><br/> 消息在{日期\u时间u stamp}发件人姓名已写入br/> 假设我的消息字符串如下所示 Hello developers <br/><br/> On {2013-02-28 05:00:33} Bob wrot
message <br/><br/> On {date_time_stamp} sender_name wrote <br/><br/>
<代码>消息在{日期\u时间u stamp}发件人姓名已写入
br/> 假设我的消息字符串如下所示
Hello developers <br/><br/> On {2013-02-28 05:00:33} Bob wrote <br/><br/>
Hello World <br/><br/> On {2013-02-27 08:35:33} Jack wrote <br/><br/>
Hello Apple <br/><br/> On {2013-02-26 04:10:44} Tom wrote <br/><br/>
Hello developers
在{2013-02-28 05:00:33}上,鲍勃写道
你好,世界在{2013-02-27 08:35:33}上杰克写道
你好,苹果公司{2013-02-2604:10:44}上汤姆写道
现在我需要遵循以下步骤
-(void)parseMessageBody:(NSString*)msg
{
NSRange openBracket = [msg rangeOfString:@"{"];
NSRange closeBracket = [msg rangeOfString:@"}"];
NSRange numberRange = NSMakeRange(openBracket.location + 1, closeBracket.location - openBracket.location - 1);
NSString *numberString = [msg substringWithRange:numberRange];
NSLog(@"Parsed string: %@",numberString);
}
-(NSString*)formattedMessageFromString:(NSString*)msg
{
NSString *formattedMessage = @"";
formattedMessage = [msg stringByReplacingOccurrencesOfString:@"<br/>" withString:@"\n"];
return formattedMessage;
}
-(NSString*)getLocalDateFromUTCDateString:(NSString*)utcDateString
{
NSDateFormatter *serverDateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *sourceTimeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[serverDateFormatter setTimeZone:sourceTimeZone];
[serverDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *dateFromServer = [serverDateFormatter dateFromString:utcDateString];
DLog(@"UTC date From SERVER: %@",dateFromServer);
NSDateFormatter *localDateFormatter = [[NSDateFormatter alloc] init];
[localDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSTimeZone* localTimeZone = [NSTimeZone systemTimeZone];
[localDateFormatter setTimeZone:localTimeZone];
NSString *localDate = [localDateFormatter stringFromDate:dateFromServer];
DLog(@"Converted Local DAte : %@",localDate);
return localDate;
}
-(void)parseMessageBody:(NSString*)消息
{
NSRange openBracket=[msg rangeOfString:@“{”];
NSRange closeBracket=[msg rangeOfString:@“}”];
NSRange numberRange=NSMakeRange(openBracket.location+1,closeBracket.location-openBracket.location-1);
NSString*numberString=[msg substringWithRange:numberRange];
NSLog(@“解析字符串:%@”,numberString);
}
-(NSString*)formattedMessageFromString:(NSString*)消息
{
NSString*formattedMessage=@;
formattedMessage=[msg StringByReplacingOfString:@“
”和字符串:@“\n”];
返回格式化消息;
}
-(NSString*)getLocalDateFromUTCDateString:(NSString*)utcDateString
{
NSDateFormatter*serverDateFormatter=[[NSDateFormatter alloc]init];
NSTimeZone*sourceTimeZone=[NSTimeZone timeZoneWithName:@“UTC”];
[serverDateFormatter setTimeZone:sourceTimeZone];
[serverDateFormatter setDateFormat:@“yyyy-MM-dd HH:MM:ss”];
NSDate*dateFromServer=[serverDateFormatter dateFromString:utcDateString];
DLog(@“UTC日期自服务器:%@”,日期自服务器);
NSDateFormatter*localDateFormatter=[[NSDateFormatter alloc]init];
[localDateFormatter setDateFormat:@“yyyy-MM-dd HH:MM:ss”];
NSTimeZone*localTimeZone=[NSTimeZone systemTimeZone];
[localDateFormatter setTimeZone:localTimeZone];
NSString*localDate=[localDateFormatter stringFromDate:dateFromServer];
DLog(@“转换的本地日期:%@”,localDate);
返回本地日期;
}
我无法执行步骤1和3以获取消息中的所有日期并将其替换为本地日期时间。
信息也会随着时间的推移而增长。所以解析需要快速。
有人能告诉我如何获取消息中的所有日期并用转换日期替换它吗
非常感谢您的任何帮助。提前感谢。可以使用正则表达式查找和替换日期:
NSString *msg = @"Hello developers <br/><br/> On {2013-02-28 05:00:33} Bob wrote <br/><br/>\n"
"Hello World <br/><br/> On {2013-02-27 08:35:33} Jack wrote <br/><br/>\n"
"Hello Apple <br/><br/> On {2013-02-26 04:10:44} Tom wrote <br/><br/>\n";
NSMutableString *replacedMsg = [msg mutableCopy];
NSString *pattern = @"\\{(.+?)\\}"; // Pattern for { ... }
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:NULL];
__block int offset = 0;
[regex enumerateMatchesInString:msg options:0 range:NSMakeRange(0, [msg length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSRange range0 = [result range]; // range including { }
NSRange range1 = [result rangeAtIndex:1]; // range excluding { }
range0.location += offset;
range1.location += offset;
NSString *oldDate = [replacedMsg substringWithRange:range1];
NSString *newDate = [self getLocalDateFromUTCDateString:oldDate];
if (newDate != nil ) {
[replacedMsg replaceCharactersInRange:range0 withString:newDate];
offset += [newDate length] - range0.length;
}
}];
NSLog(@"%@", replacedMsg);
NSString*msg=@“开发者你好,{2013-02-28 05:00:33}Bob写道
\n”
“你好,世界
在{2013-02-27 08:35:33}上,杰克写道
\n”
“你好,苹果公司,{2013-02-2604:10:44}上汤姆写道:
\n”;
NSMutableString*replacedMsg=[msg mutableCopy];
NSString*模式=@“\\{(.+?)\\}”//{…}的模式
NSRegularExpression*regex=[NSRegularExpression regular expressionwithpattern:pattern选项:0错误:NULL];
__块int偏移=0;
[regex EnumerateMatchesInstalling:msg选项:0范围:NSMakeRange(0,[msg长度])使用块:^(NSTextCheckInResult*结果,NSMatchingFlags标志,BOOL*停止){
NSRange range 0=[结果范围];//范围包括{}
NSRange range1=[result rangeAtIndex:1];//范围不包括{}
范围0.0位置+=偏移量;
范围1.位置+=偏移量;
NSString*oldDate=[replacedMsg substringWithRange:range1];
NSString*newDate=[self-getLocalDateFromUTCDateString:oldDate];
如果(newDate!=nil){
[replacedMsg ReplaceCharactersRange:Range 0 with String:newDate];
偏移量+=[newDate length]-范围0.length;
}
}];
NSLog(@“%@”,替换DMSG);
输出(我的本地时区为GMT+01):
Hello developers
鲍勃在2013-02-28 06:00:33写道
你好,世界在2013-02-27 09:35:33杰克写道
你好苹果公司在2013-02-26 05:10:44汤姆写道
如果您需要有关正则表达式的更多解释,请告诉我!您能告诉我如何将HTML代码中的li
标记替换为数字吗?这是我的问题
Hello developers <br/><br/> On 2013-02-28 06:00:33 Bob wrote <br/><br/>
Hello World <br/><br/> On 2013-02-27 09:35:33 Jack wrote <br/><br/>
Hello Apple <br/><br/> On 2013-02-26 05:10:44 Tom wrote <br/><br/>