我有一个包含很少素材的.mtl
文件。它就像是,
newmtl Bed_Sh
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2
map_Kd 145349-red-fabric-with-floral-pattern-texture-free-high-resolution-photo.jpg
newmtl Bed_Wood
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2
map_Kd wood-textures_00248249.jpg
我需要使用Bed_Wood
,Bed_Sh
标识段落并替换map_Kd (imageName.jpg)
。
我尝试使用以下代码。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
// getting path of the MTL file
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", @"test04", @"mtl"]];
NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^map_Kd (.*)$" options:NSRegularExpressionAnchorsMatchLines error:&error];
NSString *editedContent = [regex stringByReplacingMatchesInString:content options:0 range:NSMakeRange(0, [content length]) withTemplate:@"abc.jpg"];
NSLog(@"%@", editedContent);
这将替换文件中的所有map_Kd
。如何根据段落标题(Bed_Sh, Bed_Wood
)来完成。
修改::
我需要根据标题标识map_Kd
Bed_Sh
,Bed_Wood
)
提前致谢!
答案 0 :(得分:0)
你可以自己制作NSArray
块。你只需要分割整个字符串,例如与
NSArray *chunks = [inputString componentsSeparatedByString:@"\n"];
这假设每个块之间总是有一个空的换行符。另一个分隔符是newmtl
,但要小心,因为删除了用于进行拆分的字符串。也就是说,您必须将newmtl
重新附加到每个块的开头。
将其拆分为块后,在数组中搜索您的密钥,并在替换后将数组重新组合为单个字符串。
答案 1 :(得分:0)
试试这个:
if ([fileContentString rangeOfString:@"Bed_Wood"].location != NSNotFound &&
[fileContentString rangeOfString:@"Bed_Sh"].location != NSNotFound) {
NSString *editedContent = [fileContentString stringByReplacingMatchesInString:content options:0 range:NSMakeRange(0, [content length]) withTemplate:@"abc.jpg"];
}
或内部如果
[fileContentString stringByReplacingOccurrencesOfString:@"string to replace"
withString:@"replacement"];