[英]Remove tokens characters from NSString
我有一個NSTokenFiled
,它通過-tokenField:shouldAddObjects:atIndex:
委托方法來驗證插入的令牌。 不幸的是,僅當用戶按下標記化字符時才調用此方法。 當他/她在控件外單擊時,按esc或tab鍵,未完成的字符串將自動轉換為令牌,而無需調用驗證方法。
問谷歌后,我注意到這個問題是已知的,並且在stackoverflow上有人建議重寫-control:isValidObject:
委托方法來驗證剩余的字符串。
不幸的是,傳遞給此方法的對象是NSMutableString
,對於已插入令牌字段中的每個令牌,該字符均具有不可見的字符。 大概這就是可可如何跟蹤顯示令牌的位置。
我的問題是:如何刪除那些非法字符?
到目前為止,我已經嘗試了以下方法:
NSString *newString = [NSString stringWithUTF8String:[stringWithInvisibleCharcters UTF8String]];
NSString *newString = [stringWithInvisibleCharacters stringByTrimmingCharactersInSet:[NSCharacterSet illegalCharacterSet]];
NSString *newString = [stringWithInvisibleCharacters stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]];
沒有成功。 我知道最后兩個僅在令牌字符位於開頭和結尾的情況下才有效,但到目前為止,這是我的情況。
編輯:
如果它有助於記錄字符
NSLog(@"%hu",[(NSMutableString *)object characterAtIndex:0]);
返回65532。
與65532相關的字符稱為“對象替換字符”,它似乎超出了NSCharacterSet的吸氣劑所處理的Unicode范圍。 就像您說的那樣,NSTokenField將其用作令牌之間的分隔符。 像這樣的東西擺脫它應該很好:
NSCharacterSet *characterset=[NSCharacterSet characterSetWithCharactersInString:@"\uFFFC"];
NSString *newString = [str stringByTrimmingCharactersInSet:characterset];
NSString *str;
NSCharacterSet *characterset=[NSCharacterSet characterSetWithCharactersInString:@"<>"];
str = [str1 stringByTrimmingCharactersInSet:characterset];`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.