gpt4 book ai didi

objective-c - 从 NSString 中删除标记字符

转载 作者:行者123 更新时间:2023-12-03 16:49:02 26 4
gpt4 key购买 nike

我有一个 NSTokenFiled,它通过 -tokenField:shouldAddObjects:atIndex: 委托(delegate)方法验证插入的 token 。不幸的是,只有当用户按下标记字符时才会调用此方法。当他/她在控件外部单击、按 esc 或 tab 时,未完成的字符串会自动转换为 token ,而无需调用验证方法。

在询问谷歌后,我注意到这个问题是已知的,并且 stackoverflow 上的某人建议重写 -control:isValidObject: 委托(delegate)方法来验证剩余的字符串。

不幸的是,传递给此方法的对象是一个 NSMutableString,对于已插入 token 字段中的每个 token ,它都有一个不可见字符。可能这就是 cocoa 跟踪显示 token 的位置的方式。

我的问题是:如何删除这些非法字符?

到目前为止我已经尝试过这些:

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 及其 getter 处理的 Unicode 范围的范围。就像你说的, NSTokenField 使用它作为标记之间的分隔符。像这样摆脱它的东西应该可以正常工作:

NSCharacterSet *characterset=[NSCharacterSet characterSetWithCharactersInString:@"\uFFFC"];
NSString *newString = [str stringByTrimmingCharactersInSet:characterset];

关于objective-c - 从 NSString 中删除标记字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15425191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com