最近,測(cè)試反饋一個(gè)bug:iOS11系統(tǒng),從手機(jī)通訊錄拷貝一個(gè)手機(jī)號(hào)碼到輸入框后,手機(jī)格式校驗(yàn)失敗。
跟進(jìn)了一下,發(fā)現(xiàn)拷貝后的號(hào)碼信息前后各加了一個(gè)字符,如下:
前面增加了:\U202d
后面增加了:\U202c
這兩個(gè)字符在UI上是不展示的,所以看起來像是開發(fā)人員正則表達(dá)式的鍋。
解決方案是在格式校驗(yàn)前,先把數(shù)字之外的信息加以過濾,代碼如下:
+ (NSString *)clearNumberForIOS11:(NSString *)str {
if ([str isKindOfClass:[NSString class]]) {
return [[str componentsSeparatedByCharactersInSet:
[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet]] componentsJoinedByString:@""];
} else {
return str;
}
}
另外一篇文章的作者也發(fā)現(xiàn)了這個(gè)問題:
IOS 11 通訊錄手機(jī)號(hào)「隱形字符」的 Bug,Apple 真的不打算修復(fù)了嗎?