• ベストアンサー

半角文字の縦書き表示

ryu_chanの回答

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.2

コード量を減らすためmapを多用してしまいしたが、素直に書いてみました。 mapの多重ループになっているのを何とかしたいところですが、私には限界です。 use List::Util qw(max); my @aaa = ( "1234", "ABCDE", "XYZ" ); my $max_len = max map(length, @aaa); @aaa = map sprintf("%${max_len}s", $_), @aaa; @aaa = map { my $i = $_; join( q{}, map { substr $_, $i, 1 } @aaa ); } 0..$max_len-1; print join("\n", @aaa); 何かエレガントな方法がありそうな感じですよね。

関連するQ&A

  • エクセルで不要な文字列を削除したい

    [A1]http://aaa.bbbxyz  [A2]http://ccc.ddxyz こちらを [B1]http://aaa.bbb [B2]http://ccc.dd というようにxyzの部分を削除したいのですが、 大量のデーターベースを一括で直せますか?

  • 添え字が全て文字列のPHPの多次元配列をSmartyでループ表示したい。

    PHPで作成した多次元配列をSmartyでループして表示する方法について。(添え字が全て文字列の場合で、ループ回数を固定したい。) こんにちわ。 以下のような配列があるとします。 $abcde = array("sakana" => array("aaa" => "あじ","bbb" => "ひらめ"),"oyasai" => array("ggg" => "ふき","hhh" => "トマト"),"niku" => array("eee" => "ぶた","ooo" => "鳥")); echo "<pre>"; print_r($abcde); echo "</pre>"; この配列をSmartyに渡し、以下の条件でループして表示したいのですが、いい方法はありますでしょうか。 ・ループ回数は二回 ・一番最初の添え字(sakana、oyasai、niku)の値を使わずに表示したい。(自動的に上から順番に取り出してほしい) foreachだと全ての値が表示されてしまい、sectionだとうまく表示されませんでした。 ↓こんな感じで表示したいです。(ループ二回なので肉は表示せず) 魚 :あじ、ひらめ 野菜:ふき、トマト よろしくお願いします。

    • ベストアンサー
    • PHP
  • perlで列の抜き出し

    a,b,c,d 1,2,3,4 5,6,7,8 以上のような配列のデータを読み込んだときに、 c 3 7 のように縦の列のデータを抜き出すプログラムを考えています。 これはどのように記述すればよいでしょうか。 二次元配列はperlでは不可能と言うことであまりperlでは難しいでしょうか。

  • 文字を一文字ずつ区切りたい

    こんにちは、Perl始めて3か月ほどの大学生です。よろしくお願いします。 Perlにおいて「あいうえお」という文字列があればそれを配列に分けて入れることが最終目標です。 C言語出身なのでPerlにおける配列の概念がよくわからないのですが $word[0]に「あ」、$word[1]に「い」となるように もしくは@word[0][0]に「あ」、@word[0][1]に「い」となるようにしたいのです 自分なりに調べてみて $lineに「abcde」が入っているとすると my @word; $word[0] = substr($line,0,1);とした場合 print $word[0]."\n"; はうまく「a」を出力することができました しかし $line = 'あいうえお'; とすると空白になってしまいました。 したがって @word = spline(/ /,$line); foreach(@word){ print $_."\n"; } を試しました 出力結果は abcde とどうもうまく分けられていないようでした。 環境はよくわからないのですが WindowsXPでputtyjp.exeというものを使ってサーバーにアクセスしていて サーバーはLinuxのRedHatでした 日本語コードは[euc]になっていました use uft8; をすると出力時に文字化けを起こします。 手詰まりになってしまいました。解決の糸口となるヒントがあれば教えて下さい。 2バイトごとに無理やり区切ることも考えましたがバイトごとに区切る方法が分からないのとアルファベットは1バイトのような気がするのでやり方がわからなくなっています。 ご指導のほど、よろしくお願いします。

    • ベストアンサー
    • Perl
  • 二次元配列のハッシュ版の記述方法?

    二次元配列のハッシュ版を実現させたいのですが、 以下の記述で正しいでしょうか? 構文に疎いので教えてください。 #!/usr/bin/perl %HASH_TEST = ( 'あ'=>{'A'=>'1', 'B'=>'2', 'C'=>'3'}, 'い'=>{'A'=>'4', 'B'=>'5', 'C'=>'6'}, ); print $HASH_TEST{'い'}{'B'}; #=> 5が表示されます。 exit; __END__

    • ベストアンサー
    • Perl
  • preg_split explodeでの文字列分割について

    $aaa = "A&B&&D&E"; $bbb =explode("&",$aaa); こうした場合、&&の間はFALSEとして返され配列には加えられないようです。 配列の番号でデータの種類を判別したいのですが、これでは使えません。 データがない場所に数字の0や半角スペースを入れる事も考えましたが、それではデータの容量が増えてしまいます。 &&の空の部分も配列に空データとして加えるには、どうすればいいでしょうか? 私はperlの知識はある程度あるのですが、PHPは初心者です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • Javaで教えていただけける方お願いします

    int型2次元配列 a行b列をb行a列の2次元配列に変換するプログラムを 作りたいのですが、うまく変換した表示が出来ません。 123  ⇒ 14 456    25        36 できるかたお願いします。

  • 円柱と平面方程式の交線について教えて頂きたいです

    円柱 (x-a)^2+(y-b)^2=(D/2)^2  ,  0<=z<=1000 平面方程式 cx+dy+ez+f=0 上のような円柱と平面方程式とが交わってできる楕円の方程式、また その楕円上の点のうち最大と最小の値をとるzの求め方について教えて頂きたいです。 宜しくお願いします。

  • 文字単位の置換

    perlの $string=~tr/abc/xyz/; ($stringの中の"a"を"x","b"を"y""c"を"z"に置換) と同じことをphpでやりたいのですが、 できますでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • VB.NET 2次元配列

    二次元配列に関して質問があります。 二次元配列を定義します。 Dim a(,) As Integer = _ {{0, 0, 0, 0, 0, 0, 1, 1, 1}, _ {0, 0, 0, 0, 0, 1, 0, 0, 1}, _ {0, 0, 0, 0, 0, 0, 1, 1, 1}} 一次元配列を定義します。 Dim b() As Integer 一次元配列のb()に二次元配列a(,)の {0, 0, 0, 0, 0, 0, 1, 1, 1}の部分を 入れようとした場合、 どのように記載すればよろしいでしょうか? イメージ的には b = a(0) で出きると思ったのですが、 構文エラーとなってしまいます。 よろしくお願いします。