Ios 大写的字符串数组?
我有一个叫做数组的NSarray。看起来像这样Ios 大写的字符串数组?,ios,objective-c,for-loop,capitalization,Ios,Objective C,For Loop,Capitalization,我有一个叫做数组的NSarray。看起来像这样 array = @[@"one", @"two", @"three"]; for(int i = 0; i < array.lenght; i++) { self.mutableArray = addObject:[array[i] capitalizedString]; } 我想让这个数组大写。最好的办法是什么。我只能考虑制作一个名为mutableArray的NSMutableArray 然后像这样做 array = @[@"o
array = @[@"one", @"two", @"three"];
for(int i = 0; i < array.lenght; i++) {
self.mutableArray = addObject:[array[i] capitalizedString];
}
我想让这个数组大写。最好的办法是什么。我只能考虑制作一个名为mutableArray的NSMutableArray
然后像这样做
array = @[@"one", @"two", @"three"];
for(int i = 0; i < array.lenght; i++) {
self.mutableArray = addObject:[array[i] capitalizedString];
}
for(int i=0;i
或者还有其他更好的方法吗?您真正想要的是一种转换方法,它接受一个数组和一个选择器,然后返回对每个对象执行该选择器的结果数组。不幸的是,这在vanilla objective-C中并不存在 你的方法大体上是好的,但我会注意两点。首先,请确保使用要复制的
NSArray
的容量创建NSMutableArray
,因为这样可以避免在向其中添加对象时的任何重新分配开销。其次,您可能希望复制
可变数组,以便最终得到一个不可变的NSArray
所以我会用这样的方法:
- (NSArray *)capitalizeStringArray:(NSArray *)array {
// Initialize tempArray with size of array
NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:array.count];
for (NSString *str in array) {
[tempArray addObject:[str capitalizedString]];
}
return [tempArray copy]; // convert back to NSArray]
}
- (NSMutableArray *) capitalizedArrayFromArrayOfStrings: (NSArray*) array;
{
NSMutableArray *result = [NSMutableArray arrayWithCapacity: array.count];
for (NSString *string in array)
{
if ([string isKindOfClass: [NSString class]]
[result addObject: [string capitalizedString];
}
}
如果愿意,您可以将其转换为NSArray上的category方法,并根据需要将其推广到使用其他选择器。处理此问题的方法有无数种。对于小数组,选择您认为更容易理解的 我可能会使用这样的代码:
- (NSArray *)capitalizeStringArray:(NSArray *)array {
// Initialize tempArray with size of array
NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:array.count];
for (NSString *str in array) {
[tempArray addObject:[str capitalizedString]];
}
return [tempArray copy]; // convert back to NSArray]
}
- (NSMutableArray *) capitalizedArrayFromArrayOfStrings: (NSArray*) array;
{
NSMutableArray *result = [NSMutableArray arrayWithCapacity: array.count];
for (NSString *string in array)
{
if ([string isKindOfClass: [NSString class]]
[result addObject: [string capitalizedString];
}
}
在开始时使用正确的容量创建阵列,使阵列能够为其未来的所有元素分配足够的空间,并避免以后需要分配更多空间
在快速枚举语法中使用for..比使用数组索引更有效,但对于短数组,差异很小。代码也更易于编写和阅读,因此我更喜欢尽可能使用这种语法
正如Alex所说,您还可以在NSArray上创建一个category方法,该方法将返回数组的大写版本,或者甚至在NSMutableArray上创建一个category方法,该方法将替换数组中的字符串“就地”。您正在寻找的神奇方法确实存在
NSArray *array = @[@"one", @"two", @"three"];
NSArray *capArray = [array valueForKeyPath:@"capitalizedString"];
工作起来很有魅力
NSString *myString = YOUR_ARRAY.uppercaseString;
[myNSMutableArray addObject:myString];
SWIFT
你可以使用地图
let array = ["one", "two", "three"]
let upercaseArray = array.map({$0.uppercased()})
现在您有了类似于
[“一”、“二”、“三”]
的SupercaseArray,OP明确表示,他们正在寻找一种解决方案,将已经存在的多个字符串数组转换为每个大写字符串的数组……如果有人想要大写,那么使用“uppercaseString”
而不是“capitalizedString”
。