У меня есть такой пример:
2
00:01:32,288 --> 00:01:33,208
¬O¥L̶ܡH
How are you?
3
00:01:36,768 --> 00:01:39,648
€Ñ°Ú¡A¥LÌ¥ŽºâŽN³o»ò°µ¶Ü¡H
âŽN³o»ò°µ¶Ü¡H
I am fine
And you ?
-------------------- Вот мое решение, но оно неполное
#!/usr/bin/perl -w
$lineIndex = 0;
while($line=<>){
$lineIndex++; #line index start from 1
$content{$lineIndex}=$line; #copy to content
for($i = 0; $i < length ($line); $i++){
$char = substr $line,$i,1;
if($char =~ /\W/){
#print $char;
$count{$lineIndex}++; #how many special char this line
}
}
}
# if line contains more than 14 special char,then skip
print "\n";
for $i (keys %count){
if($count{$i} > 14){ #<----------------see here
delete $content{$i};#delete from content
}
}
for $j (sort keys %content){ #output
print $content{$j};
}
Мое решение имеет следующую проблему: ���O�J�b� յ ۺ�� X - несоответствие, потому что его длина <= 14, если изменить порог на небольшое число, например, 6 строк, таких как 00:01: 33,208 будут сопоставлены, поэтому удалите из содержимого </p>
Есть ли хороший способ проверить char в utf-8?