04-カンマ区切りデータを操ろう

カンマ区切りファイル(csv?)って簡単なデータを保存するときによく使うけど、
どう扱ったらいいんだろう?って思ったことありませんか?
カンマ区切りの文字列を配列に変換する方法を紹介します。

Java編

Javaではjava.util.StringTokenizer?クラスを使います。
配列にコピーしてるだけなんで、大したことしなければ、このクラスのまんま処理しちゃってもいいのかも。
Javaドキュメント(StringTokenizerクラス)

★ソース

import java.util.StringTokenizer;
public class StringTokenizerTest{
	public static void main(String args[]){

		//例えばこんなデータがありました
		String str = "45,54,134,6,33,761,45,135,512,631,13";
		System.out.println(str);

		//カンマ区切りのTokenizerを作成
		StringTokenizer st = new StringTokenizer(str, ",");

		//データ数だけint配列を作成
		int data[] = new int[st.countTokens()];

		//データをintに変換してコピー
		int i = 0;
		int sum = 0;
		while (st.hasMoreTokens()) {
			data[i] = Integer.parseInt(st.nextToken());
			sum += data[i];
			i++;
		}

		//表示
		for(int j=0;j<data.length;j++){
			System.out.println(j + " : " + data[j]);
		}
		System.out.println("sum : " + sum);
	}
}

★実行結果

E:\Java>java StringTokenizerTest
45,54,134,6,33,761,45,135,512,631,13
0 : 45
1 : 54
2 : 134
3 : 6
4 : 33
5 : 761
6 : 45
7 : 135
8 : 512
9 : 631
10 : 13
sum : 2369

PHP編

PHPらしく関数一発でOKです。
こーゆーのがPHPの便利なところ。
ちなみに「配列→区切り文字列」ってのもimplode関数一発で可能。
PHPマニュアル(explode関数)

★ソース

<?php

//例えばこんなデータがありました
$str = '45,54,134,6,33,761,45,135,512,631,13';
echo($str.'<br>');

//配列に変換
$data = explode(',', $str);

$sum = 0;

//配列表示・合計計算
foreach($data as $k => $d){
	echo($k.' : '.$d.'<br>');
	$sum += $d;
}

//合計表示
echo('sum : '.$sum.'<br>');

?>

★実行結果

45,54,134,6,33,761,45,135,512,631,13
0 : 45
1 : 54
2 : 134
3 : 6
4 : 33
5 : 761
6 : 45
7 : 135
8 : 512
9 : 631
10 : 13
sum : 2369

ASP.NET編

.NETも一発で変換OKです。
引数がchar型の配列ってとこに注意。
.NETFrameworkクラスライブラリ(String.Splitメソッド)

★ソース

<html>
<script language="C#" runat="server">

private void Button1_Click(object sender, EventArgs e){
	String[] arrStr = Text1.Text.Split(',');
	Repeater1.DataSource = arrStr;
	Repeater1.DataBind();
}

</script>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>カンマ区切りデータ</title>
</head>
<body>

<form runat="server">
<asp:TextBox id="Text1" width="300" runat="server" text="45,54,134,6,33,761,45,135,512,631,13" />
<asp:Button id="Button1" runat="server" onClick="Button1_Click" text="実行" /><br />

<asp:Repeater id="Repeater1" runat="server">
	<ItemTemplate><%# Container.DataItem %><br /></ItemTemplate>
</asp:Repeater>
</form>

</body>
</html>

★実行結果

45,54,134,6,33,761,45,135,512,631,13 [実行]
45
54
134
6
33
761
45
135
512
631
13

感想・質問等どうぞ


Tag: Tips Java PHP .NET


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-04-10 (土) 18:47:34 (773d)
.NET Ajax AmazonWebServices Android C# C++ CMS Cacoo DB Exam Generics Java JavaScript Local Oracle PHP Perl Photo Programming Pukiwiki Python Qt Review Ruby SQLServer Seasar Software Tips Tool VB WebService Windows WindowsMobile XHTML XML XMLMaster XSLT game pdf wkhtmltopdf