J'ai une chaîne $ incluant une barre de caractères spéciale comme "1234 \\ n567 \\ t";
Remarque "\\ n" et "\\ t" sont tous deux char, et non trois caractères. alors quand ils sont affichés, ils sont affichés comme "\ n" et "\ t".comment changer \ n en n en perl
Pour une raison quelconque, j'ai besoin de changer la chaîne comme: "1234 \ n567`efg \ t". Comment faire cela d'une manière simple?
Voici mon code, je pense que ce peut être amélioré:
@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'
...
);
Voulez-vous dire que vous voulez convertir $ string de "1234 \\ n567 \\ t" à "1234 \ n567 \ t"? – drummondj
Il serait utile d'afficher une affectation précise de vos données d'entrée d'échantillon à '$ string'. Il pourrait être '$ string = q {1234 \\ n567 \\ t};' ou '$ string = qq {1234 \\ n567 \\ t};', par exemple, ce qui donne deux points de départ assez différents. Il serait également utile d'avoir une chaîne de sortie désirée précise: '$ result = qq {1234 \ n567 \ t};' ou tout ce qui est correct. –
@Jonathan 'q {1234 \\ n567 \\ t}' et 'qq {1234 \\ n567 \\ t}' sont des chaînes identiques (et aucune ne contient deux barres obliques inverses à la suite :) – hobbs