【发布时间】:2016-06-20 13:23:22
【问题描述】:
我首先只是尝试使用以下方法在一行中找到它:
$w = index($line, "\x{2014}");
我没有遇到语法错误,但 $w 从未 >= 0。
我试过了:
$line =~ s/\x{2014}/--/g;
这也不起作用,即:没有进行任何更改。
进行交换的最简单方法是什么?
如果这在之前的帖子中有解释,我没看到。
【问题讨论】:
-
检查输入的编码。例如,如果是 UTF-8 编码,则 em-dash 将匹配
\x{e2}\x{80}\x{94}。 -
好!这适用于索引调用,但不适用于正则表达式。但这将完成工作。遗憾的是,文档没有说明必须将十六进制分解为 3 个单独的字符。
-
$line =~ s/\x{2014}/--/g;确实有效,这意味着$line不包含破折号。也许它包含 em dash 的 UTF-8 编码?解码输入,编码输出!