最近遂鹊,測(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上是不展示的,所以看起來(lái)像是開(kāi)發(fā)人員正則表達(dá)式的鍋误澳。
解決方案是在格式校驗(yàn)前耻矮,先把數(shù)字之外的信息加以過(guò)濾,代碼如下:
+ (NSString *)clearNumberForIOS11:(NSString *)str {
if ([str isKindOfClass:[NSString class]]) {
return [[str componentsSeparatedByCharactersInSet:
[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet]] componentsJoinedByString:@""];
} else {
return str;
}
}
另外一篇文章的作者也發(fā)現(xiàn)了這個(gè)問(wèn)題:
IOS 11 通訊錄手機(jī)號(hào)「隱形字符」的 Bug忆谓,Apple 真的不打算修復(fù)了嗎裆装?