Как я могу использовать только определенные слова в некотором тексте?

#perl

#perl

Вопрос:

У меня есть некоторый текст:

Блок текста представляет собой стопку линейных блоков. В случае ‘left’, ‘right’ и ‘center’ это свойство определяет, как поля встроенного уровня внутри каждого линейного поля выравниваются по левой и правой сторонам линейного поля; выравнивание не выполняется по отношению к области просмотра. В случае ‘justify’ это свойство указывает, что поля встроенного уровня должны располагаться на одном уровне с обеими сторонами линейного поля, если это возможно, путем расширения или сжатия содержимого встроенных полей, в противном случае выровненных по исходному значению. (Смотрите также «интервал между буквами» и «интервал между словами».)

Все слова в тексте с «th» должны быть написаны в верхнем регистре (с использованием функции uc).

Вот мой код

 @tykeldatud=split(/ /, $string);
$j=@tykeldatud;
for ($i=1;$i<=$j;$i  ) {
    ...
  

Что мне написать дальше?

Ответ №1:

Это просто замена.

используйте строгий;
используйте предупреждения;

мой $ string = <<EOF;
Блок текста представляет собой стопку линейных блоков. В случае 'left', 
'right' и 'center', это свойство определяет, как встроенный уровень 
поля внутри каждой строки выравниваются по левому краю строки 
и правые стороны; выравнивание выполняется не по отношению к области просмотра. В 
в случае 'justify' это свойство указывает, что встроенный уровень 
поля должны располагаться на одном уровне с обеими сторонами линейного поля, если 
возможно, путем расширения или сжатия содержимого встроенных блоков, 
остальное выровнено по исходному значению. (Смотрите также "интервал между буквами" и 
'интервал между словами'.)
EOF

$string =~ s/  b( S * th  S *) b/uc $ 1 /ieg;
вывести $string;

Ответ №2:

 use warnings;
use strict;

my $string = <<EOF;
A block of text is a stack of line boxes.  In the case of 'left',
'right' and 'center', this property specifies how the inline-level
boxes within each line box align with respect to the line box's left
and right sides; alignment is not with respect to the viewport.  In
the case of 'justify', this property specifies that the inline-level
boxes are to be made flush with both sides of the line box if
possible, by expanding or contracting the contents of inline boxes,
else aligned as for the initial value.  (See also 'letter-spacing' and
'word-spacing'.)
EOF

my $string2;
for (split / /, $string) {
    $_ = uc if /th/i;
    $string2 .= "$_ ";
}
print "$string2n";