So I found this question ,这对iOS中的智能标点符号问题提供了一些很好的见解,但我想大规模地进行替换,即在一个完整的字符串上,而不是在用户输入时进行替换。
我环顾四周,似乎通过使用 \u<<code point>> 。这对匹配regex有用吗?
\u<<code point>>
我有这个字符串:
"This is a message from iOS with itâs so-called âsmartâ punctuation.
我一直在尝试用以下内容替换测试:
x.replace(/\u8220/g, 'XXXX');
我可以验证代码点是否在字符串中(通过dev tools JS控制台):
> x.charCodeAt(47); 8220
但是调用replace的输出是相同的字符串,没有改变。我还尝试将unicode部分包装到 [] 但是没有运气。我是在装聋作哑,还是不以这种方式支持我?
[]
8220是 十进制的 左双引号的值。使用 \uXXXX 您需要指定 十六进制 在这种情况下,代码点的值 \u201C 。
\uXXXX
\u201C
下面的表达式将用“直”引号替换字符串中的所有卷曲引号:
s.replace(/[\u2018\u2019\u201C\u201D]/g, (c) => '\'\'""'.substr('\u2018\u2019\u201C\u201D'.indexOf(c), 1));