как изменить \\ n на \ n в Perl - PullRequest
0 голосов
/ 07 декабря 2010

У меня есть строка $, включающая специальный символ после слэша, такой как "1234 \\ n567 \\ t";
Примечание. \\ n "и" \\ t "- все два символа, а не три символа.поэтому, когда они отображаются, они отображаются как "\ n" и "\ t".

По какой-то причине мне нужно изменить строку следующим образом: "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'    
...  
); 

Ответы [ 2 ]

3 голосов
/ 07 декабря 2010

Ну, простой способ - использовать String :: Escape :

use String::Escape 'unbackslash';

my $string = "1234\\n567\\t";
my $new_string = unbackslash($string);
3 голосов
/ 07 декабря 2010

Почему бы и нет:

s/\\n/\n/g;
s/\\t/\t/g;

Было бы неплохо использовать tr///, но это не может преобразовать два символа в один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...