У мене є рядок сказати, s1 = "привіт", я хочуманіпулюємо ним як масивом, наприклад, в c ++ ми можемо використовувати s1 [i] для адреси персонажів цього масиву, як це робити в perl? Я хочу додати символ у s1 [0] з символом у s1 [1]. Я спробував використовувати
$s=join("",$s1[0],$s1[1]); $s=$s1[0].$s1[1]; $s=${s1[0]}.${s2[0]};
але я не в змозі об'єднати персонажів. Я хочу додати h і e і поставити він, аналогічно e і l як el і так далі, до кінця слова, а потім продовжувати те саме з наступним словом.
чи можу я також перевірити, чи є s [i] у списку (b, c, d, h, l), і якщо s [i + 1] в (a, e, i, o, u), то додайте s [i ] і s [i + 1].
Вхідний приклад:
Здрастуйте
диск
абонентВибірка вибірки:
Здравствуйте
ді с к
ca l le r
Відповіді:
1 для відповіді № 1В основному ви хочете вставити пробіл між двома символами слова до тих пір, поки вони не є у двох вказаних вами наборах.
Ви можете зробити це за допомогою substr
як це демонструють інші, але цей тип текстової маніпуляції - це одне, для чого регулярні вирази були розроблені для:
use strict;
use warnings;
while (<DATA>) {
s/(?![bcdhl][aeiou])wK(?=w)/ /g;
print;
}
__DATA__
hello
disk
caller
Виходи:
he l lo
di s k
ca l le r
0 для відповіді № 2
Так, використовуючи substr()
щоб вибрати окремих персонажів:
perl -E "$s="hello";say substr($s,0,1),substr($s,4,1)"
Вихід:
ho
0 для відповіді № 3
substr () можливо:
print substr($s, $_, 1), " " for (0..length($s) - 1)
Вихід:
Здравствуйте
substr () також добре для операцій на місці, наскільки він повертає значення ref:
substr($s,0,2) = "";
say $s;
Вихід:
лло
0 для відповіді № 4
my @char_array = split "", $s1;
@char_array
тепер містить усіх символів $s1
рядок, і ним можна маніпулювати, перебирати над ним або робити все, що завгодно, як і з будь-яким іншим масивом.
0 для відповіді № 5
Ти можеш тобі splice
для вставки елементів у задане положення масиву:
echo -e "hellondiskncaller" | perl -F"" -ane " splice (@F,2,0," "); splice(@F,4,0," "); foreach(@F){print}"
he l lo
di s k
ca l ler
Ви можете використовувати Data :: Dumper для кращої візуалізації під час роботи з масивами:
echo -n "hello" | perl -MData::Dumper -F"" -ane " splice (@F,2,0," "); splice(@F,4,0," ");print Dumper(@F)"
$VAR1 = [
"h",
"e",
" ",
"l",
" ",
"l",
"o"
];