トップ «前の日記(2005-11-13 [日]) 最新 次の日記(2005-11-15 [火])» 編集

SewiGの日記

2004|01|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|

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(",") のように条件分岐するのか。どうすればスマートに書けるのかな。

本日のツッコミ(全3件) [ツッコミを入れる]
てっつん (2005-11-17 [木] 16:14)

懐かしいね。永遠のテーマだね(大げさ)。きみに初めて出会った頃に話題にした覚えがあるんだけど。if (0 < i) 派かなぁやっぱ。StringBufferの時は if (0 < buff.size()) で。rubyとかだと strings.join(",") でスカッとするんだけどねー。

SewiG (2005-11-17 [木] 17:02)

joinメソッドがあるスクリプト言語は多いですね。
Javaにはsplitがあるのにjoinがないのが不思議。

てっつん (2005-11-18 [金] 17:06)

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

そうそう、最近の仕事で集合の積演算、和演算を使うことによって、
すごく簡潔に問題が解決できたケースがありましたよ。
ああいうのを他の言語でチマチマ書くのは嫌だし、
他の言語では思いつかない解決方法だったなあと思いました。


Copyright © 2004-2008 SewiG All rights reserved.