2012-06-25 54 views
2

我需要將數據庫記錄格式化爲網頁論壇可以正確顯示的表格(使用bbcode)。有問題的論壇不尊重的空間,無論哪種類型的格式標記我使用,但確實有一個等寬字體的,所以我需要通過這樣的下劃線替換所有空格都保持一致:在Perl中打印固定列表的最佳方式(使用下劃線而不是空格)

Field____Field____Field 
Value____Value____Value 
Value____Value____Value 
Value____Value____Value 
Value____Value____Value 

我已經研究Perl格式和printf,但我無法弄清楚如何使用這些方法將空格和製表符變爲下劃線。文本也具有可變長度,所以我需要列也是可變的(不能硬編碼固定值)。

任何幫助,將不勝感激。謝謝!

+0

豈不BB代碼的標籤'[代碼]'保留空間? – TLP

回答

2

一個黑客一點,但我會用sprintf,但我會用另一個替換我的價值空間無法在這些值中找到的字符(如〜)。這可以用一個簡單的正則表達式來完成。 在sprintf之後,我會用值中的下劃線和我的特殊字符替換空格。

+0

剛剛意識到我正在尋找sprintf(而不是printf)...謝謝:) –

1

你不需要任何先進的,你只需要使用下劃線來代替空格:

my $str = "Field  Field  Field"; 
$str =~ tr/ /_/; 
print $str; 
+0

如果您已經生成了字符串,替換部分很容易,但我沒有。信息是在數據庫中,我需要打印每行最小寬度的多行(大約2個空格作爲列之間的間距)。 Printf是格式化動態寬度列的更直接的方法,但它使用空格,我不知道如何將printf的輸出放入變量中。 –

+0

剛剛意識到我可以使用sprintf(而不是printf)......我看着錯誤的東西! –

0

如果在你的字段中的值可能包含標籤(或其他類空字符),你可能要做到以下幾點:

my $str = "Field  Field\tContinued  Field"; 
$str =~ s/\s/_/g; 
print $str; 
相關問題