- 论坛徽章:
- 0
|
我再研究一個問題 就是單引號和雙引號 的問題
$Source = "a星許功一1二2三3四4五5六6柒7捌8九9拾";
$Source_unpack = decode('big5',$Source);
print "替換前字串 = $Source\n";
上面 光 這樣子 沒做任何動作 出來的結果就不一樣了
結果會是
替換前字串 = a星野中G2三3四4五5六6柒7捌8九9拾
但是 如果換成 單引號 如下
$Source = 'a星許功一1二2三3四4五5六6柒7捌8九9拾';
$Source_unpack = decode('big5',$Source);
print "替換前字串 = $Source\n";
結果會是 我想要的
替換前字串 = a星許功一1二2三3四4五5六6柒7捌8九9拾
或許各位大大會認為 用單引號就好了 可是 $Source 將來是 有大量的變動資料回圈 都是以 變數回來的
所以想請問 如果這樣子 要如何 才能讓 $Source 一直保持原變數不變 像用 單引號一樣 直到 print 出來
多謝
以下是 我目前呆呆回圈替換法的程式方式
#主程式--開始
open(IN,"./PattenMap.txt");
my @PattenMap_DATA = <IN>;
close(IN);
$Source = 'a星許功一1二2三3四4五5六6柒7捌8九9拾';
$Source_unpack = decode('big5',$Source);
print "替換前字串 = $Source\n";
#字元匹配轉換-開始
while(<@PattenMap_DATA>){
my ($PattenSource,$PattenTarge) = split(/\=/,$_);chomp $PattenSource;chomp $PattenTarge;#分離對應碼並清除多餘值
$PattenSource_decode = decode('big5',$PattenSource);$PattenTarge_decode = decode('big5',$PattenTarge); #對應碼解碼
$Source_unpack =~ s/$PattenSource_decode/$PattenTarge_decode/g; #對應碼替換
$PattenSource="";$PattenSource_decode="";$PattenTarge="";$PattenTarge_decode=""; #對應碼參數歸0
}
$Source = encode('big5',$Source_unpack); #對應碼編碼
#字元匹配轉換-結束
print "替換後字串 = $Source\n";
PattenMap.txt 前面ok 後面就可以更多 之後會再用資料庫來做替換方式
'一'='壹'
'二'='貳'
'三'='參'
'四'='肆'
'五'='伍'
'六'='陸'
'七'='柒'
'八'='捌'
'九'='玖'
'十'='拾' |
|