TypeScript中如何转义字符串中的 ?自动化测试元素定位
解决TypeScript中构造包含非断空格的字符串问题
HTML里的 对应非断空格(Unicode U+00A0),不是普通空格(U+0020),你之前的写法无效是因为把HTML实体直接放到了TypeScript字符串里,TS并不识别 这种HTML语法。
正确的构造方式:
- 直接使用Unicode转义序列(最推荐,跨环境可靠):
const targetText = 'Safe\u00A01'; - 通过
String.fromCharCode生成:const targetText = `Safe${String.fromCharCode(160)}1`; // 160是U+00A0的十进制编码值 - 直接输入非断空格(可选,需确保编辑器编码支持,不如转义稳定):
直接在字符串里输入非断空格(比如Windows下Alt+0160,Mac下Option+Space):const targetText = 'Safe 1'; // 注意这里的空格是非断空格,不是普通空格
为什么你之前的写法无效:
'Safe${ }1':这是普通字符串不是模板字符串(未用反引号`包裹),且 是HTML实体,TS无法解析为空格。'Safe\ \1':\&只是转义了&字符,最终得到的是字面量字符串Safe 1,不是带非断空格的文本;\1是正则反向引用,此处无意义。'Safe\\ \\1':多转义了反斜杠,结果还是字面量的 字符串,不是空格。'Safe '+ + '1': 在TS中是未定义变量,会直接抛出语法错误。
如果你的测试框架支持文本匹配的宽松模式(比如忽略空白差异),也可以尝试用普通空格结合匹配选项,但如果需要精确匹配HTML中的非断空格,上面的方法就能解决问题。
内容的提问来源于stack exchange,提问作者BruceyBandit
相关产品推荐
相关产品推荐

