2011-07-14 128 views
1

這裏是一個noob問題。搜索並替換字符串中的擴展ASCII

我正在嘗試自動搜索和替換字符串中的ASCII值的過程。

所以,我有一個的UITextField

NSString *searchText; 
searchText = (mmText.text); 

內容構建,然後我做一個小的循環,並檢查所有輸入的字符爲他們的ASCII值的字符串。如果它們不在允許的範圍內,我想搜索並用其他東西替換它們(?現在)

所以我們假設我在循環中,並且我得到一個ASCII 45字符(它是一個負號) :

​​

現在我想找到字符串中的ASCII 45字符和一個帶問號

這取代它就是我此刻做:

NSString *ascStr = [NSString stringWithFormat:@"%c", asciiCode]; 
NSRange matchSpace; 
matchSpace = [searchText rangeOfString: ascStr]; 
if (matchSpace.location == NSNotFound) 
{} 
else 
NSMutableString *searchandReplace = [NSMutableString stringWithString: searchText]; 
[searchandReplace replaceCharactersInRange: [searchandReplace rangeOfString: ascStr] withString: @"?"]; 
    mmText.text = searchandReplace; 
    } 

這w ^對於一個正常的ASCII值(0-255),它可以正常工作,但它似乎不適用於來自外語的擴展ASCII值。例如,在使用韓語模式時,其中一個主字符看起來像是一個雙重交叉的W,但是當通過NSLog打印時,它看起來像是版權標誌。這可能是搜索和替換程序無法使用的原因。它具有8361的ASCII值。

有什麼想法?謝謝!

回答

2

事實證明它是那樣簡單改變:

NSString *ascStr = [NSString stringWithFormat:@"%c", asciiCode]; 

NSString *ascStr = [NSString stringWithFormat:@"%C", asciiCode]; 

%C 8位無符號字符(無符號字符),通過的NSLog()作爲一個ASCII印刷字符,或者如果不是ASCII字符,則爲八進制格式\ ddd或Unicode十六進制格式\ udddd,其中d是數字

%C 16位Uni代碼字符(unichar),由NSLog()作爲ASCII字符打印,或者如果不是ASCII字符,則以八進制格式\ ddd或Unicode十六進制格式\ udddd打印,其中d是數字