顯示具有 iOS -- NSString 標籤的文章。 顯示所有文章
顯示具有 iOS -- NSString 標籤的文章。 顯示所有文章

2012年10月23日

找尋 NSString 字串裡的某一個字或某一段字,將之取代為另一個字或另一段字


找尋字串裡是否含有某一個字或某一段文字,如果確定找到,將之取代為另一個字或另一段文字:

e.g.
I am in a bad mood.  ==>  I am in a good mood.
我今天心情很。  ==>   我今天心情很

*************************************************

- (void) viewDidLoad {

NSString *original = @"I am in a bad mood.";

NSLog (@"After replace, the result = %@", [self replaceStringWithSomeCharacters: original]);

}

- (NSString *) replaceStringWithSomeCharacters : (NSString *) aString{
    
 // 1. 定義要換掉的字串
    NSRange search = [aString rangeOfString:@"bad" options:NSCaseInsensitiveSearch];
  
//2. 建立一個新字串,值為 ""
    NSString *afterReplace = @"";

//3. 如果有找到要替換的"bad"
    if (search.location != NSNotFound) {

//4. 以"good" 替換掉 search 
        afterReplace = [aString stringByReplacingCharactersInRange:search withString:@"good"];

//5. 回傳替換後的結果
        return afterReplace;
    }
  
//4. 字串中找不到有"bad"的地方,回傳原來的字串
    return aString;
}

2012年10月7日

iOS -- NSString 轉 C string and vise versa



// 從 NSString 轉成 char (C 語言物件:C string):

   NSString *aStr = @"Hello CQ!";
   const char *update = [aStr cStringUsingEncoding:NSUTF8StringEncoding];
   printf("%s\n",  update);

或是:

e.g. 1
const char *ptr2 = [aStr UTF8String];
printf("%s\n", ptr2);



e.g. 2 (適用在建立 sqlite3 的query)

NSString *query = [NSString stringWithFormat:@"SELECT %@ FROM %@ WHERE %@ = %@ ORDER BY %@, destinationColumn, aTablename, aColumn, aString, ROWID";
    const char * sql = [query UTF8String];


********************************

// C string 轉  NSString

ptr = "C string to string object";
NSString *str = [NSString stringWithCString:ptr encoding:NSUTF8StringEncoding];
NSLog(@"%@", str);





2012年6月28日

如何在iOS讀出繁體中文的檔案


如何在iOS讀出繁體中文的檔案:

準備兩個檔;一個是以Big5寫的, e.g. translation01.txt
                     另一個是以UTF-8寫的,e.g. UTF8.txt





#import <Foundation/Foundation.h>

/** 讀出中文檔案內容 **/

int main (int argc, const char * argv[])
{

    @autoreleasepool {
        
        NSLog(@"** begin **");
        NSString * strBig5, *strUTF8, *strUTF_8;
               
        //Big5
        NSLog(@"\n\n** 這是繁體中文Big5的實驗 **");
         NSStringEncoding encBig5 = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingBig5);
        strBig5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/Android/Resources/txt/translation01.txt" encoding:encBig5 error:nil];//OK
         NSLog(@"%@\n\n", strBig5);
        
        
        //UTF─8
        NSLog(@"** 這是繁體中文UTF-8的實驗 **");
        strUTF_8 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/Android/Resources/txt/UTF8.txt" encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"%@\n\n", strUTF_8);
        
        
        //UTF8:舊式
        NSLog(@"** 這是UTF8的實驗(舊式) **");
         NSStringEncoding encUTF8 = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF8);
        strUTF8 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/Android/Resources/txt/UTF8.txt" encoding:encUTF8 error:nil];
        NSLog(@"%@", strUTF8);
        
        
       
    }
    
    return 0;
}

結果:


2012-06-28 22:51:53.146 InitiationChap10[912:903] ** begin **
2012-06-28 22:51:53.150 InitiationChap10[912:903] 
** 這是繁體中文Big5的實驗 **
2012-06-28 22:51:53.160 InitiationChap10[912:903] 1.她是像天使般的女性。
She is an angel of a woman.
2.排山巨浪湧過來了。
A mountain of a wave came near.
3.這幾乎是不可能的。
This is all but impossible.
4.她就像是死了一樣。
She is all but dead.
5.他們並非全部都滿意這項結果。
All of them were not satisfied with the result.
2012-06-28 22:51:53.161 InitiationChap10[912:903] ** 這是繁體中文UTF-8的實驗 **
2012-06-28 22:51:53.162 InitiationChap10[912:903] 這是utf8的實驗,希望能顯示繁體中文。
2012-06-28 22:51:53.164 InitiationChap10[912:903] ** 這是UTF8的實驗(舊式) **
2012-06-28 22:51:53.165 InitiationChap10[912:903] 這是utf8的實驗,希望能顯示繁體中文。
Program ended with exit code: 0



P.S.
簡體中文的話,得改成:kCFStringEncodingGB_18030_2000