Tencent / QMUI_iOS

QMUI iOS——致力于提高项目 UI 开发效率的解决方案
http://qmuiteam.com/ios
Other
7.05k stars 1.37k forks source link

去除零宽字符崩溃 #1542

Open happy201993 opened 4 months ago

happy201993 commented 4 months ago

Bug 表现 崩溃

截图 Bug 现场的界面截图,或者 Xcode 控制台的错误信息截图,有问题的代码截图 image

如何重现 运行下面的代码,崩溃 NSString *text = @"18‍22"; [text qmui_stringByReplacingPattern:@"[\u200b-\u200f\uFEFF\u202a-\u202e]" withString:@""];

预期的表现 不崩溃,并且能替换掉零宽字符

其他信息

MoLice commented 4 months ago

QMUIStringPrivate 里对 -[NSStirng substringWithRange:] 处理 ComposedCharacterSequence 的保护,在正则表达式替换时反而是不需要的,这会导致你例子里的 replace 不符合预期,无法将“18‍22”(请直接复制)替换为“1822”,目前请先用以下文件替换你本地的同名文件,后续会修复。 QMUIStringPrivate.m.zip