我是iOS的新手,我遇到了在 NSXMLPerser 的foundCharacters
方法中替换字符串值的问题。
我的代码就像这样
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
myMutableStringassignedObj=[[NSMutableString alloc]initWithString:string];
NSLog(@"Array String: %@",myMutableStringassignedObj);
myMutableStringassignedObj = [[myMutableStringassignedObj stringByReplacingOccurrencesOfString:@"&"
withString:@"and"] mutableCopy];//I am changing string like this but it not working
NSData *data = [myMutableStringassignedObj dataUsingEncoding:NSUTF8StringEncoding];
responseassigneddict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"JSON DATA = %@",responseassigneddict);
}
由于& ,它会给我null值。有没有办法改变它。在此先感谢!
答案 0 :(得分:2)
用这个
替换你的字符串修改方法[myMutableStringassignedObj replaceOccurrencesOfString:@"&" withString:@"and" options:NSLiteralSearch range:NSMakeRange(0, myMutableStringassignedObj.length)];
之后,将您的字符串放在NSArray或NSDictionary中。
NSArray *array = @[myMutableStringassignedObj];
这里的问题是:您没有从jsonData
对象解码NSData
。 jsonData
应始终以Array
或Dictionary
开头。在此,您已将NSString
转换为NSData
并尝试使用NSJSONSerialization
对其进行解码。所以,由于这个原因,你得到一个错误。我检查了错误代码。
因此,要将NSData
解码为jsonObject/Foundation Object
,您应该将字符串放入NSArray
或NSDictionary
,然后将其转换为{{1}使用NSData
NSJSONSerialization
修改强>
正如评论中所述,请使用XMLParser库来解决此问题。
答案 1 :(得分:0)
你可以这样做,
NSString *string = @"hello & hello";
NSString *result = [string stringByReplacingOccurrencesOfString:@"&" withString:@"and"];
NSLog(@"result : %@",result);
没有将其转换为mutable string
!
答案 2 :(得分:0)
NSMutableString *String = [[NSMutableString alloc]initWithString:@"B&c"];
[String replaceOccurrencesOfString:@"&" withString:@"and" options:NSRegularExpressionSearch range:NSMakeRange(0, String.length)];
NSLog(@"string after replacing %@",String);
输出:
string after replacing `Bandc`
答案 3 :(得分:0)
编码具有特殊字符的数据的问题。直接使用以下行代码而不是替换&或任何特殊字符。
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789"];
NSString *encodedData = [myMutableStringassignedObj stringByAddingPercentEncodingWithAllowedCharacters:set]];
NSData *data = [encodedData dataUsingEncoding:NSUTF8StringEncoding];