"1234 \\ n567 \\ t"のようなスラッシュに続く特殊文字を含む$文字列があります。
メモ "\\ n"と "\\ t"は2つのcharであり、3つのcharではありません。表示されたときには、 "\ n"と "\ t"と表示されます。perlの nを nに変更する方法
何らかの理由で、文字列を "1234 \ n567`efg \ t"と変更する必要があります。どのように簡単な方法でそれを行うには?
は、ここで私が思う私のコードは、向上させることが可能である。
@src_array = split(//, $string);
@des_array =();
$size = $#src_array + 1;
$converting = 0;
for ($i = 0, $j = 0; $i< $size; $i++){
if ($converting == 1) {
# convert and replace '\\n' with '\n'
$des_array[$j++] = $slash_char{$src_array[$i]};
$converting = 0;
}
elsif ($src_array[$i] == '\\'){
$converting = 1;
}
else {
$des_array[$j++] = $src_array[$i];
}
}
my %slash_char = (
'a' => '\a',
'b' => '\b'
...
);
あなたは "1234の\ n567の\ tの" に "1234 \\ n567 \\ T" から$文字列を変換したいわけですか? – drummondj
サンプル入力データを '$ string'に正確に代入すると便利です。たとえば、$ string = q {1234 \\ n567 \\ t};や '$ string = qq {1234 \\ n567 \\ t};'など、2つの全く異なる開始点を与えることができます。 '$ result = qq {1234 \ n567 \ t};やそれ以外の正しい出力文字列を持つこともまた役に立ちます。 –
@Jonathan 'q {1234 \\ n567 \\ t}'と 'qq {1234 \\ n567 \\ t}'は同じ文字列です(いずれも1行に2つのバックスラッシュを含みません)。 – hobbs