我的名字是“Ryan”,下次输入“Ryan”时应该检查它是否具有值,因此应该将其设为“Ryan_1”。同样,它应该检查是否有人再次添加“Ryan”,它应该将其更改为“Ryan_2”。
例子:
nameArray = ["Ryan","John","Ryan_2","Rhonda","Ryan_3","Kylie","Ryan_4","John_2"];
我使用下面的代码,第一次添加名称时工作正常。
但是当我回到该部分并编辑值时,例如:我将 Ryan_2 更改为“xyz”,并再次考虑保留“Ryan”,保存的值将变为“Ryan_4”,而它应该是“Ryan_2”数组。假设我将“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];
}
}
}
最佳答案
我会推荐这样的扩展:
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")
过滤数组以获取要插入的名称的最大索引。
关于ios - 检查字符串是否已经存在并在数组中的字符串中添加一个数字作为后缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37570848/