1
要做簡單的字符串操作比我要使用的操作要簡單一些。我有一個方法允許用戶複製目錄中的文件。如果他們在表格視圖中選擇它並按下克隆按鈕,則該文件的副本將被保存,並且fileName將會附加子字符串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];
}
}
}
這工作,但似乎不是正確的方法。任何意見是極大的讚賞。
這其實不是一個糟糕的實現都:本身是不漂亮的問題,所以,解決它不能既漂亮的算法。 – dasblinkenlight
好的。我很欣賞這些意見 – Miek