我有一個來自文件的輸入,我需要將輸入中的羅馬數字轉換爲單詞或整數。 在我的文章有字符串,數字,羅馬數字的組合,但我只需要更改羅馬數字,我使用convert :: number :: roman但它需要整個文本,當然它不是羅馬將羅馬轉換爲Perl中的單詞/數字
當我使用羅馬,它應該轉換我們的價值:
$roman = roman(13);
$arabic = arabic($roman) if isroman($roman);
請告訴我嗎?
我有一個來自文件的輸入,我需要將輸入中的羅馬數字轉換爲單詞或整數。 在我的文章有字符串,數字,羅馬數字的組合,但我只需要更改羅馬數字,我使用convert :: number :: roman但它需要整個文本,當然它不是羅馬將羅馬轉換爲Perl中的單詞/數字
當我使用羅馬,它應該轉換我們的價值:
$roman = roman(13);
$arabic = arabic($roman) if isroman($roman);
請告訴我嗎?
如果我明白了這個問題,您正在嘗試轉換包含在較大文本內的羅馬數字。做這件事最簡單的方法,雖然相當暴力,但會做一個eval替代。例如。
#!/usr/bin/env perl
use strict;
use warnings;
use Text::Roman 'roman2int';
my $text = <<'END';
Tim: Let's meet at half past VI.
Toady: Hmm, no good. How about quarter to IX?
END
$text =~ s/\b(\w+)\b/roman2int($1) || $1/ge;
print $text;
由於roman2int
返回undef失敗轉換,我們只是儘量每個字轉換,如果它成功使用別的離開原來的字。這當然會有問題,比如說有效的羅馬數字,如I
,IV
,ID
,等等。這當然是由您決定的。
與此相關的,它可能是有趣的在字典上運行的代碼,看看有多少話是有效的羅馬數字:-)
的第一個問題應該始終是:「是否有CPAN的模塊會做這份工作嗎?「你去http://search.cpan.org/找出。搜索'Roman'會爲初學者揭示模塊['Roman'](http://search.cpan.org/perldoc?Roman);和['Math :: Roman'](http://search.cpan.org/perldoc?Math%3A%3ARoman)和['Text :: Roman'](http://search.cpan.org/perldoc ?Text%3A%3ARoman)和['Convert :: Number :: Roman'](http://search.cpan.org/perldoc?Convert%3A%3ANumber%3A%3ARoman)。 – 2013-04-04 02:55:01
我知道有cpan。仍然嘗試 – new 2013-04-04 03:07:35
,因爲在我的文章中也有字符串,但我只需要將羅馬數字更改爲數字,我使用convert :: number :: roman,但它需要整個文本,當然它不是羅馬 – new 2013-04-04 03:22:34