2011年3月31日 星期四

array : split String

之前就抱怨過ObjC的麻煩了,不過,試著使用ObjC來分割(split,我不知道中文怎麼翻,所以就用自己覺得最適合的翻譯。)更覺得ObjC的麻煩……
怎麼會有人想的到這麼麻煩的寫法啊……

以下是各程式split string的方法

Java


public class StringTest {
public static void main(String[] args) {
String str1 = "This is a string.\nThis is 2nd line.\n";
String splitStr[] = str1.split("\n");
System.out.print(splitStr[1]);
}
}

比較麻煩的是,像「?」、「|」、「.」……等部分特殊字元要像下面那樣寫:
String splitStr[] = str1.split("\\.");


javascript


var str1 = "This is a string.\nThis is 2nd line.\n";
var splitStr = str1.split("\n");
document.write(splitStr[1]);

其實跟java差不多,只是不像java還有部分字元的限制

Actionscript


var str1:String = "This is a string.\nThis is 2nd line.\n";
var splitStr:Array = str1.split("\n");
trace(splitStr[1]);
幾乎同javascript的說……

C


沒學到那,但到是在網路找到教學

Objective-C


#import <stdio.h>
#import <Foundation/NSString.h>

int main( int argc, char *argv[] ) {
NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSString *str1 = @"This is a string.\nThis is 2nd line.\n";
NSArray *splitStr = [str1 componentsSeparatedByString:@"\n"];

//print splitStr
NSLog(@"%@", [splitStr objectAtIndex:1]);
//以C的方式print
printf("%s", [[splitStr objectAtIndex:1] UTF8String]);

/*對不起,這裡有誤,因為不是alloc、copy、new﹍﹍所以str1、splitStr不用release*/
//[str1 release];
//[splitStr release];
[pool release];
return EXIT_SUCCESS;
}
}



補充


如果想要求出Array 的長度
前三者只要「Array.length」就好。
但是C是
sizeof( Array ) / sizeof(int)

ObjC則是
[Array count] //無論是NSArray(固定長度的array)還是NSMutableArray(類似js那樣長度不固定的array)都是用count 

沒有留言:

張貼留言