删除非ascii字符并在非ascii字符使用Perl的字段中追加一个空格都删除双“引号”?

时间:2016-08-03 18:39:17

标签: perl

我正在传递一个固定的(平面文件)。我需要帮助删除非ascii字符并在非ascii字符使用Perl的字段中追加一个空格都删除双“引号”?我还需要删除任何不可见的字符并留下数据: 我需要使用正则表达式执行此操作;

请参阅以下示例:

FOìO BAR       PO BOX 1234          
LASDìBA"       PO BOX 1234
VìD"Sxxx       PO BOX 1234

1: $str =~ s/"/ /g; removes the " and replaces it with a space (good)

2: $str =~ s/[^!-~\s]/ /g;

请帮助:j

2 个答案:

答案 0 :(得分:0)

我相信这会用空格替换所有特殊和不可见的字符。

$str =~ s/(.)/(ord($1) > 127) ? " " : $1/egs;

答案 1 :(得分:0)

您可以尝试以下代码:

Android 6.0

输出:

while(<DATA>)
{
    $_=~s/([^[:ascii:]]|")/ /g;
    print $_;
}


__DATA__
FOìO BAR       PO BOX 1234
LASDìBA"       PO BOX 1234
VìD"Sxxx       PO BOX 1234