【发布时间】:2010-12-22 04:03:19
【问题描述】:
我想知道如何将 NSArray [@"Apple", @"Pear ", 323, @"Orange"] 转换为 Objective-C 中的字符串。
【问题讨论】:
-
@beryllium 这个问题是在我提出问题两年后提出的。
标签: objective-c arrays nsstring nsarray
我想知道如何将 NSArray [@"Apple", @"Pear ", 323, @"Orange"] 转换为 Objective-C 中的字符串。
【问题讨论】:
标签: objective-c arrays nsstring nsarray
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
【讨论】:
[array description] 插入换行符和外圆括号。
NSString * myString = [array componentsJoinedByString:@""]; 可以替代这个吗?
<ClassName: InstanceAddress>。 valueForKey 使其检索每个项目的指定属性。在这种情况下,description 是来自 NSObject 的 NSString * 属性,其 getter 可以被其子类覆盖。
一种方法是遍历数组,在每个项目上调用description 消息:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
[result appendString:[obj description]];
}
NSLog(@"The concatenated string is %@", result);
另一种方法是根据每个项目的类做一些事情:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
if ([obj isKindOfClass:[NSNumber class]])
{
// append something
}
else
{
[result appendString:[obj description]];
}
}
NSLog(@"The concatenated string is %@", result);
如果你想要逗号和其他无关信息,你可以这样做:
NSString * result = [array description];
【讨论】:
-description)然后使用-componentsJoinedByString: 和@"" 作为参数连接它们可能会更有效。
我认为 Sanjay 的答案几乎就在那里,但我是这样使用的
NSArray *myArray = [[NSArray alloc] initWithObjects:@"Hello",@"World", nil];
NSString *greeting = [myArray componentsJoinedByString:@" "];
NSLog(@"%@",greeting);
输出:
2015-01-25 08:47:14.830 StringTest[11639:394302] Hello World
正如 Sanjay 所暗示的那样 - 我使用了 NSArray 中的方法 componentsJoinedByString 来加入并返回 NSString
BTW NSString 有反向方法 componentsSeparatedByString 进行拆分并返回 NSArray 。
【讨论】:
我最近发现了一个关于 Objective-C 字符串的非常好的教程:
http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/
我认为这可能很有趣:
如果要将字符串拆分为数组,请使用名为 componentsSeparatedByString 的方法来实现:
NSString *yourString = @"This is a test string";
NSArray *yourWords = [myString componentsSeparatedByString:@" "];
// yourWords is now: [@"This", @"is", @"a", @"test", @"string"]
如果你需要对一组不同的字符进行拆分,请使用 NSString 的 componentsSeparatedByCharactersInSet:
NSString *yourString = @"Foo-bar/iOS-Blog";
NSArray *yourWords = [myString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@"-/"]
];
// yourWords is now: [@"Foo", @"bar", @"iOS", @"Blog"]
但请注意,分隔符字符串不能为空。如果您需要将一个字符串分成单独的字符,只需遍历字符串的长度并将每个字符转换为一个新字符串:
NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[myString length]];
for (int i=0; i < [myString length]; i++) {
NSString *ichar = [NSString stringWithFormat:@"%c", [myString characterAtIndex:i]];
[characters addObject:ichar];
}
【讨论】:
NSString * str = [componentsJoinedByString:@""];
你有 dic 或多个数组,然后在下面使用
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
【讨论】:
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];
第一行用对象初始化一个数组。 第二行通过在 "" 中添加字符串来连接该数组的所有元素并返回一个字符串。
【讨论】:
Objective C 解决方案
NSArray * array = @[@"1", @"2", @"3"];
NSString * stringFromArray = [[array valueForKey:@"description"] componentsJoinedByString:@"-"]; // "1-2-3"
那些在Swift寻找解决方案的人
如果数组中包含字符串,可以使用String的join方法:
var array = ["1", "2", "3"]
let stringFromArray = "-".join(array) // "1-2-3"
在 Swift 2 中:
var array = ["1", "2", "3"]
let stringFromArray = array.joinWithSeparator("-") // "1-2-3"
在 Swift 3 和 4 中
var array = ["1", "2", "3"]
let stringFromArray = array.joined(separator: "-") // "1-2-3"
【讨论】:
我知道的方法很简单。
var NSArray_variable = NSArray_Object[n]
var stringVarible = NSArray_variable as String
n 是数组的内部位置
这在 SWIFT 语言中。
它可能适用于Objective C
【讨论】:
Swift 3.0 解决方案:
let string = array.joined(separator: " ")
【讨论】: