必须有一种比我想要的更简单的方法来进行简单的字符串操作。我有一种方法允许用户复制目录中的文件。如果他们在表格视图中选择它并按下克隆按钮,则会保存文件的副本,并且文件名将附加子字符串 Copy。如果 Copy 已经存在,那么我们需要迭代文件名并通过循环迭代附加文件名。例如;
<filename> Copy 1
<filename> Copy 2
until my other method return that the name is unique.
我需要检查传入的文件名的三个标准;它是否已经附加了“复制”是否已经附加了一个字符串数字如果是,获取数字的值将其迭代一并放回。
过了好一阵子,我只能想出这个:
//Tokenize the string
NSArray *filenameArray =[copyName componentsSeparatedByString:@" "];
//Make sure the name is unique
//Update the namesArray
[self montageNameList];
int i = 1;
for(NSString * name in self.montageNames){
if([channelSetManager_ checkNoDuplicateName:self.montageNames forThisName:copyName]== YES){
break;
}else{
if([[filenameArray lastObject]isEqualToString:@"Copy"]){
//Just add a number to the end of the string
copyName = [copyName stringByAppendingFormat:@" %d", i];
}else if(([[filenameArray lastObject]intValue] > -1) && ([[filenameArray lastObject]intValue] < 100)){
i = [[filenameArray lastObject]intValue]+1;
NSInteger len = [[filenameArray lastObject]length]+1;
copyName = [copyName substringToIndex:[copyName length] - len ];
copyName = [copyName stringByAppendingFormat:@" %d",i];
}
}
}
这可行,但似乎不是正确的方法。任何意见是极大的赞赏。