上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- / Top↑
文字列データの弄り方です。
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
JavaプログラミングMini TIPs - 0007【文字列の扱い】
-----------------------------------------------------------------
知っていると便利?いつかは役立つ?……かも知れないTIPsです。
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
javaでデータファイルを扱い出すと必ずといっていい程に文字列をいじくり回します。データは文字列で読み出すようになるからです。

読み込んだデータレコード(1行データ)は1つ1つの項目に細分化して見ていきます。中には半バイトで数字1桁(1バイトで数字2桁)なんて特別な形式もありますが、普通であれば数字1文字1バイトな表し方最多です。文字列データの場合で何らかの処理を行うには文字列データを弄くりまわします。ここでは以前の記事と多少のダブりもありますが文字列の取り回し方を少々…。


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
サンプルコード
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
項目内の構成内容を確認したい時には必然的に文字列検索となります。項目の中に検索文字があるかどうか調べたいときにはindexOfやlastIndexOf命令を使用します。indexOfは先頭桁からの文字列検索、lastIndexOfは末尾桁からの文字列検索になります。


■■■■■■■■■■■■■■■■■■
文字の位置を求める(正順)
■■■■■■■■■■■■■■■■■■
String shousuu = "123456.789";
String str = "abcdefghij";
// 検索文字列が無いと-1で帰ってくる
int p1 = shousuu.indexOf("."); //"."の位置 先頭0から
int p2 = shousuu.indexOf(".", 0); //"."の位置 先頭0から
int p3 = shousuu.indexOf(".", 7); //"."の位置 先頭7から
int p4 = str .indexOf("efg", 0); //(str, fromIndex)
int p5 = str .indexOf("klm", 0); //(str, fromIndex)
System.out.println("p1="+p1 +" p2=" +p2+" p3=" +p3
+" p4=" +p4+" p5=" +p5);

<<<計算結果>>>>>>>
p1=6 p2=6 p3=-1 p4=4 p5=-1


■■■■■■■■■■■■■■■■■■
文字の位置を求める(逆順)
■■■■■■■■■■■■■■■■■■
String shousuu = "123456.789";
String str = "abcdefghij";
// 検索文字列が無いと-1で帰ってくる
int q1 = shousuu.lastIndexOf("."); //"."の位置 先頭0から
int q2 = shousuu.lastIndexOf(".", 0); //"."の位置 先頭0から
int q3 = shousuu.lastIndexOf(".", 7); //"."の位置 先頭7から
int q4 = str .lastIndexOf("efg", 9); //(str, fromIndex)
int q5 = str .lastIndexOf("efg", 3); //(str, fromIndex)
int q6 = str .lastIndexOf("klm", 9); //(str, fromIndex)
System.out.println("q1="+q1 +" q2=" +q2+" q3=" +q3
+" q4=" +q4+" q5=" +q5+" q6=" +q6);

<<<計算結果>>>>>>>
q1=6 q2=-1 q3=6 q4=4 q5=-1 q6=-1


初めて文字列を弄り出した時には何じゃらほい?の世界でした。(^^;) 慣れればそういうものだと思えるのですが、文字列はアドレス的な考え方をするので先頭バイト位置が0バイトと数えます。以下の<文字列の位置>を参考に上の<計算結果>を見ると納得できると思います。

<<<文字列の位置>>>>>>>
String shousuu = "123456.789"
1 - 0
2 - 1
3 - 2
4 - 3
5 - 4
6 - 5
. - 6
7 - 7
8 - 8
9 - 9
String tring str = "abcdefghij";
a - 0
b - 1
c - 2
d - 3
e - 4
f - 5
g - 6
h - 7
i - 8
j - 9


■■■■■■■■■■■■■■■■■■
桁数を求める
■■■■■■■■■■■■■■■■■■
String moji = "abcdefghij";
int keta = moji.length();
System.out.println("keta="+keta);

<<<計算結果>>>>>>>
keta=10


■■■■■■■■■■■■■■■■■■
1文字変換
■■■■■■■■■■■■■■■■■■
String retsu = "123456.789";
String kekka = retsu.replace(".", ""); // ピリオドを消す
System.out.println("kekka="+kekka);

<<<計算結果>>>>>>>
kekka=123456789


■■■■■■■■■■■■■■■■■■
文字列の抜き出し
■■■■■■■■■■■■■■■■■■
String nmoji = "123456.789";
String C_retSS1 = nmoji.substring(0, 6);
String C_retSS2 = nmoji.substring(3, 10);
System.out.println("C_retSS1="+C_retSS1 +"C_retSS2="+C_retSS2);

<<<計算結果>>>>>>>
C_retSS1=123456 C_retSS2=456.789

substringでの抜き出しの場合はバイト位置の数え方に独特な面があります。括弧の中は(スタート位置,エンド位置)なのですが、スタート位置はそのままですが、エンド位置は”その位置の手前のバイト位置まで”のような捉え方をします。


■■■■■■■■■■■■■■■■■■
Stringからの変換
■■■■■■■■■■■■■■■■■■
Stringでの文字列特定などが行われると、あとはそのデータの数値変換などがあります。

//━━━━━━━━━━━━━━━━━
// String → Int その1
//━━━━━━━━━━━━━━━━━
//String 999999値を整数値に変換
String nmoji1 = "123456";
int Integer1 = Integer.valueOf(nmoji1);
Integer Integer2 = Integer.parseInt(nmoji1.substring(0,6));
System.out.println("Integer1="+Integer1 +" Integer2="+Integer2);

<<<計算結果>>>>>>>
Integer1=123456 Integer2=123456

//━━━━━━━━━━━━━━━━━
// String → Double
//━━━━━━━━━━━━━━━━━
//String 999999.999値をdouble値に変換
String nmoji2 = "123456.789";
double nmdouble = Double.valueOf( nmoji2 );
System.out.println("nmdouble="+nmdouble);

<<<計算結果>>>>>>>
nmdouble=123456.789


--- 以上 ---


<お断り>
・Javaコードはバージョンによって使用に影響を受ける可能性があります。
 (バージョンによって未サポートのためエラーとなるコードも存在します)
・当サンプルはEclipse使用前提のためimportステップは省略しています。


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
当作業の実行環境
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
◆オペレーティングシステム:CentOS release 5.9 (Final) CPU:32bit メモリ:512MB
◆Java SE Development Kit 8
(JREの環境)
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode, sharing)
2014.10.26 / Top↑
Secret(管理者にだけ表示を許可する)


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。