文本处理 - Helper
去掉文本里的不可见字符。微信等应用会在 contentDescription 的字与字之间插入零宽空格、窄空格。屏幕上是「武汉光谷」,indexOf('武汉光谷') 和 descContains('武汉光谷') 却匹配不到。
只保留普通空格(U+0020)。控制符、换行、零宽字符、方向标记、变体选择符,以及不换行空格、窄空格、全角空格都会去掉。入参为 null 时返回空字符串,不会抛异常。
stripInvisible(text)
参数:
text {string}原始文本,可以为null
返回: {string} 去掉不可见字符后的文本。text 为 null 时返回空字符串
javascript
let raw = '武\u200b汉\u200b光\u200b谷 已关注';
console.log(Helper.stripInvisible(raw)); // 武汉光谷 已关注contains(text, keyword)
参数:
text {string}原始文本,可以为nullkeyword {string}要查找的关键词
返回: {boolean} 两边都去掉不可见字符后,文本是否包含关键词。文本或关键词为 null,或关键词去掉不可见字符后为空,返回 false
javascript
let keyword = '武汉光谷';
let tag = UiSelector().className('android.view.View').filter(v => {
return Helper.contains(v.desc(), keyword);
}).findOne();desc()、descContains() 比较的是原文,不会自动去掉这些字符。需要包含匹配时,用 filter 配合 Helper.contains。
