iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0

以前用Perl寫過Android包版程式,遇到AP名稱需要XML特殊字元,要改為跳脫字元。於是寫下兩支很妙的副程式:

sub escapeXmlChar{
   my$s= shift;
    my %esc= (
        '&' => '&',
        "'" => '′',     # ',但單引號在Android的strings.xml無法被編譯,需用倒單引號,原因未知
        '<' => '&lt;',
        '>' => '&gt;',
        '"' => '&quot;'
        );
    $s=~ s/[&'<>"]/$esc{$&}/g;
    return $s;
}

# 反過來則是:
sub XmlChar {
    my $s= shift;
    my %esc= (
        '&amp;' => '&',
        '&apos;' => "'",  
        '&lt;' => '<',
        '&gt;' => '>',
        '&quot;' => '"'
        );
    $s=~ s/&(amp|apos|lt|gt|quot);/$esc{$&}/g;
    return $s;
}

escapeXmlChar是將XML特殊字元轉換成跳脫字元,而XmlChar則是將跳脫字元轉換成特殊字元。最妙的是$&這個變數,是前面符合的pattern變成%esc這個hash裡的key。


上一篇
請bash找專家幫忙跑迴圈
下一篇
PowerShell發HTTP Request
系列文
作業系統的專武30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言