header.txtというファイルがある。
レコード区切りがタブ"\t"でカラムの区切りが","となっている。
カラムは[コード,名称]となっている。
例) 01,受注\t02,発注\t03,入金\t04,出金\t05,発送
上記文字列をkaiseki(笑)してコード部の配列[01, 02, 03, 04, 05]を作成したい模様。
//ファイル読み込み処理は別で投稿予定。
//String Head = hoge_method("header.txt")
String Head = "01,受注"+"\t"+"02,発注"+'\t'+"03,入金"+'\t'+"04,出金"+'\t'+"05,発送";
String codehead[] = null;
int xmax = IndexMax(Head, '\t', 1);
if(xmax > 0) {
String str = "";
codehead = new String[xmax];
for(int i=0; i<xmax; i++) {
str = Kaiseki(Head, i + 1, '\t');
codehead[i] = Kaiseki(str, 1, ',');
}
}
//[01, 02, 03, 04, 05]
System.out.print(Arrays.asList(codehead));
//===============================================================
//指定された区切り文字で区切った文字列の数
//===============================================================
public static int IndexMax(String st, char ch, int flg) {
int num = 0;
if(flg == 0) {
//対象の文字列が空白になるまでの文字列数
while(Kaiseki(st, num + 1, ch).length() !=0 ) {
num++;
}
}
else {
//対象の文字列の区切った文字列数
if(st.length() != 0) {
while(st.indexOf(ch) != -1) {
num++;
st = st.substring(st.indexOf(ch) + 1);
}
num++;
}
}
return num;
}
//===============================================================
//指定された区切り文字で区切った文字列の数
//===============================================================
public static String Kaiseki(String st, int number, char ch) {
String str=st,str2="";
int num = 0;
if(st.length() != 0) {
for(int i=0; i<number; i++) {
str = str.substring(num);
if(str.indexOf(ch) == -1) {
if(i == number - 1) str2 = str;
else {
break;
}
}
else {
str2 = str.substring(0, str.indexOf(ch));
num = str.indexOf(ch) + 1;
}
if(i != number - 1) str2 = "";
}
}
return str2;
}
使い方ヒント: 「これは臭う」という行を見付けたら、各行の
をクリックしてマーキングしておきましょう(要Twitter OAuth認証)
つ System.out.println(Arrays.asList(Head.split(",[^\t]*(\t|$)")));
Arrays.asListを知っているレベルなのになんでCSV読み込みライブラリを使わないのか
ファイル読み込みぐらい書けよ…
> System.out.println(Arrays.asList(Head.split(",[^\t]*(\t|$)")));
これはこれで別の意味でウンコードのような。。
CSVなんてクソデータじゃそれで充分。そもそもCSVなんてものはバズワードだし。このデータは",[^\t]*(\t|$)"という区切りで分けられた値だから巷のクソデータライブラリで分割できるのなんてあるのか?openCSV(笑)
ええと。。
色々あるけど、さしあたっては「これのどこがCSV形式?」とだけ言ってみよう。うん、そうしよう。
解釈としてEOLを'\t'、区切りを','としたCSV形式になるかなこれは。正確にはCSVなんてデータ形式は存在せず、文字列の解釈の決め方に過ぎないわけで、文字列の解釈ならば正規表現万能ひゃっほー
あ、一行目をデータではなくフィールド名称とするって眷属もいるから、そういうのはデータ形式って言ってもいいのか?
ともかく今時なら、属性使いたいかDOMしか無かったならXML、単にデータを入れるだけならJSONだよな。
CSVとかpropertiesなんて前世紀の負の遺産、早く死ねばいいのに(私情)
まあ、一言で言うと、あれかな。
ずいぶん低空飛行だね、君。
ん?コードそっちのけで俺の事しかコメント無いのか。
はっはっはっ、照れるなw
勝手な予想ですけど、XMLとかJSONとかだったら、この人はもっと複雑怪奇なkaisekiメソッドを作るような気がする。 ついでに、「//ファイル読み込み処理は別で投稿予定」の部分で、XMLとかJSONとか改行区切りのCSVとか等の別の形式から、わざわざ今回のカンマとタブ区切りに変形しているような予感がする。
この程度ならiniの方が扱いやすいと思うけど、ヘッダだけでこんなに大量にコード書くのね
コメント投稿には、twitter認証が必要です。
Twitter認証
どこが臭いのか分からないくらいの臭気だわ。5行くらいで終わるのに。