2010-10-15 31 views

Trả lời

4

Nó có vẻ như characterAtIndex: sẽ làm các trick, nhưng đó trả về một unichar, mà không phải là một Loại dữ liệu có nguồn gốc từ NSObject và do đó không thể được đưa trực tiếp vào mảng. Bạn sẽ cần phải xây dựng một chuỗi mới với mỗi unichar.

Giải pháp đơn giản hơn là sử dụng substringWithRange: với phạm vi 1 ký tự. Chạy chuỗi của bạn thông qua một vòng lặp for (int i=0;i<[myString length];i++) đơn giản để thêm từng dải ký tự 1 vào một số NSMutableArray.

+0

Đó làm việc rực rỡ, cảm ơn rất nhiều cho các phản ứng nhanh chóng :-) –

1

A NSString đã một mảng thành phần của nó, nếu theo thành phần bạn ngụ ý các ký tự đơn. Sử dụng [string length] để lấy độ dài của chuỗi và [string characterAtIndex:] để nhận các ký tự.

Nếu bạn thực sự cần một mảng các đối tượng chuỗi chỉ với một ký tự, bạn sẽ phải tự tạo mảng đó. Lặp lại các ký tự trong chuỗi bằng một vòng lặp for, tạo một chuỗi mới với một ký tự đơn bằng cách sử dụng [NSString stringWithFormat:] và thêm chuỗi đó vào mảng của bạn. Nhưng điều này thường không cần thiết.

0

Không biết nếu điều này làm việc cho những gì bạn muốn làm nhưng:

const char *foo = [myString UTF8String] 
char third_character = foo[2]; 

Hãy chắc chắn để đọc các tài liệu trên UTF8String

1

Trong trường hợp của bạn, vì bạn không có dấu phân cách, bạn có để có được ký tự riêng biệt bởi

- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange 

hay này một

- (unichar)characterAtIndex:(NSUInteger) index inside a loop. 

Đó là cách duy nhất tôi thấy, tại thời điểm này.

24

Có một chức năng thành viên sẵn sàng của NSString để làm điều đó:

NSString* foo = @"safgafsfhsdhdfs/gfdgdsgsdg/gdfsgsdgsd"; 
NSArray* stringComponents = [foo componentsSeparatedByString:@"/"]; 
Các vấn đề liên quan