SewiGの日記
2005-11-14 [月] [長年日記]
■ [Programming] 区切り文字の入れ方
迷いませんか? 仕様として区切り文字の入れ方をサポートしていない言語の場合にはどう書けばいいんでしょうか。
CSVでコンマ区切りにしたい場合、例えば「item1,item2,item3」のようにしたい場合、繰り返し構文で単純に「項目,」と出力したら「item1,item2,item3,」と最後に余分な区切り文字が入ります。(逆もあり)
で、以下のソース。
public class Iterate { public static void main(String[] args) { String[] strings = {"なぎさ", "きょう", "ことみ", "ともよ", "ふうこ", "ゆきね", "りょう", "みさえ", "さなえ", "こうこ", "めい"}; String sp = ""; for (int i = 0; i < strings.length; ++i, sp = ",") { System.out.print(sp + strings[i]); } } }
または、if (i != 0) System.out.print(",") のように条件分岐するのか。どうすればスマートに書けるのかな。
懐かしいね。永遠のテーマだね(大げさ)。きみに初めて出会った頃に話題にした覚えがあるんだけど。if (0 < i) 派かなぁやっぱ。StringBufferの時は if (0 < buff.size()) で。rubyとかだと strings.join(",") でスカッとするんだけどねー。
joinメソッドがあるスクリプト言語は多いですね。
Javaにはsplitがあるのにjoinがないのが不思議。
Javaの配列はjoinが無いばかりではなく何か妙ですもんね(
配列の要素数は「a.length」か「a.length()」か? [j-h-b:5708]
http://java-house.jp/ml/archive/j-h-b/005708.html#body
配列のlengthはフィールドではない [j-h-b:23392]
http://java-house.jp/ml/archive/j-h-b/023392.html#body
)。配列だけ何か特別な扱いをさせられているというか。
ここでRubyではArrayが組み込みクラスであり、
メソッド豊富でおいしいです。他のスクリプト言語は知りませんが。
http://www.ruby-lang.org/ja/man/?cmd=view;name=Array
そうそう、最近の仕事で集合の積演算、和演算を使うことによって、
すごく簡潔に問題が解決できたケースがありましたよ。
ああいうのを他の言語でチマチマ書くのは嫌だし、
他の言語では思いつかない解決方法だったなあと思いました。