我的名字是“Ryan”,下次进入“Ryan”时应该检查它是否有值,所以它应该是“Ryan_1”。同样的方式它应该检查是否有人再次添加“Ryan”它应该将其更改为“Ryan_2”。
示例:
nameArray = ["Ryan","John","Ryan_2","Rhonda","Ryan_3","Kylie","Ryan_4","John_2"];
我正在使用下面的代码,这是第一次添加名称时工作正常。
但是当我回到该部分并编辑值Ex:我将Ryan_2改为“xyz”并再次考虑保留“Ryan”时保存的值变为“Ryan_4”,因为它应该是“Ryan_2”in数组。而且,如果我将“Ryan_4”更改为“somenewName”,现在其他重复名称的编号也会重新排列。
NSMutableArray *array = [[NSMutableArray alloc]init];
int occurrences = 0;
for(NSString *string in nameArray) {
if ([value isKindOfClass:[NSString class]]) {
if ([string containsString:value]) {
[array addObject:string];
}
occurrences+= ([string containsString:value] ? 1 : 0);
}
}
if ([value isKindOfClass:[NSString class]]) {
if (![value isEqualToString:@""]) {
if (occurrences > 1) {
value = [value stringByAppendingFormat:@"_%d", occurrences];
}
}
}
答案 0 :(得分:1)
我会推荐这样的扩展程序:
extension NSMutableArray {
public func appendWithSuffix(strNewEntry:String) {
var n = 1
var new = strNewEntry
if self.containsObject(strNewEntry) {
new = strNewEntry + "_\(n)"
while self.containsObject( new ){
n += 1
new = strNewEntry + "_\(n)"
}
}
self.addObject( new )
}}
如果没有找到,它将寻找完全匹配并插入,即它将添加" Ryan_5"而不是" Ryan"," John_3"而不是" John"等等。
另一种方法可能是迭代所有条目进行比较或使用"namexy".hasPrefix("Ryan")
过滤数组以获取要插入的最大名称索引。
答案 1 :(得分:0)
- (IBAction)SaveText:(id)sender
{
if (array.count==0)
{
[array addObject:_txtAddText.text];
}else
{
for(NSString *string in array)
{
if ([string containsString:_txtAddText.text] )
{
count = count+1;
NSString *Localstring =[NSString stringWithFormat:@"%@%d",[string stringByAppendingString:@"_"],count];
NSLog(@"%@",Localstring);
[array addObject:Localstring];
break;
}else
{
[array addObject:_txtAddText.text];
}
}
}
NSLog(@"%@",array);
}