2

データベースレコードを、Webフォーラムが適切に表示できるテーブルにフォーマットする必要があります(bbcodeを使用)。問題のフォーラムは、使用するフォーマットタグの種類に関係なくスペースを尊重しませんが、等幅フォントを使用しているため、すべてのスペースを次のようにアンダースコアに置き換えて、すべてを揃える必要があります。

Field____Field____Field
Value____Value____Value
Value____Value____Value
Value____Value____Value
Value____Value____Value

Perl形式とprintfを調べましたが、これらの方法を使用してスペースとタブをアンダースコアにする方法がわかりません。テキストの長さも可変であるため、列も可変である必要があります(固定値をハードコーディングすることはできません)。

どんな助けでもいただければ幸いです。ありがとう!

4

3 に答える 3

2

少しハックしますが、sprintfを使用しますが、値のスペースを、これらの値にない別の文字(〜など)に置き換えます。これは、単純な正規表現で実行できます。sprintfの後、スペースをアンダースコアに置き換え、値の特殊文字をスペースに戻します。

于 2012-06-25T18:49:45.077 に答える
1

高度なものは必要ありません。スペースをアンダースコアに置き換えるだけです。

my $str = "Field     Field     Field";
$str =~ tr/ /_/;
print $str;
于 2012-06-25T18:44:58.200 に答える
0

フィールドの値にタブ(または他のスペースのような文字)が含まれている可能性がある場合は、次のようにすることができます。

my $str = "Field     Field\tContinued     Field";
$str =~ s/\s/_/g;
print $str;
于 2012-06-25T18:51:01.770 に答える