OC 中定位特殊字符

今天遇到一个问题,连续输入检索,输入中文的时候,系统会返回一个带空格的字符串,然后马上又去除。这样会造成连续检索,导致中间搜索到空白,有空白页的闪屏。

如:用户输入 Url, 通过textfield delegate 回调,的是:
U
U r
Ur
U r l
Url
经过百度,发现这个空格并不是普通的空格。

解决办法:

  1. 定位字符串
NSData * u = [text dataUsingEncoding:NSUTF8StringEncoding];
NSString *hex = [u description];

发现当返回U r 的时候, hex 显示的是:0x55e2808672
返回 Ur, hex 显示的是 0x5572
所以,可以定位这个空格的编码为 e28086
所以,去除办法就是:

- (NSString *)cleanChineseSpace
{
  char space[] = {0xe2, 0x80, 0x86};
  NSData *data = [NSData dataWithBytes:space length:3];
  NSString *strSpace = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  NSString *ret = [self stringByReplacingOccurrencesOfString:strSpace withString:@""];
  return ret;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容